我有一个由SqlDataSource填充的下拉列表,带有以下标记:
<asp:DropDownList ID="SaleIDDropDown" runat="server" CssClass="dropdown"
DataSourceID="DropDownDataSource" DataTextField="Title" DataValueField="ID"
AppendDataBoundItems="true">
</asp:DropDownList>
<asp:SqlDataSource ID="DropDownDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:SQL-DEV %>"
SelectCommand="SELECT [ID], [Title], [userid] FROM [AdSelect]">
</asp:SqlDataSource>
我遇到的问题是当我通过我正在制作的网络界面更改某些数据时(我删除了一个项目,或者更改了它的标题),Dropdown会填充旧数据,即使它在DataBase中显然发生了变化(我使用SQL Server Studio进行了检查)。如果我重新加载页面,然后最后会正确填充Dropdown。
我需要一种方法来“强制”重新获取/选择数据,但到目前为止我的努力都失败了。我已尝试在代码中执行此操作,但它没有生效。
DropDownDataSource.Select(DataSourceSelectArguments.Empty);
DropDownDataSource.DataBind();
SaleIDDropDown.DataBind();
即使运行此下拉列表,它仍然不会更新下拉列表。
如何制作下拉列表及其SqlDataSource并将其推送到命令页面?
答案 0 :(得分:1)
请注意,即使您的禁用viewstate的解决方案有效,但它远非最佳,因为它将在每次回发时从数据库加载数据。
如果这是一个繁忙的网站,你真的不想要那个。尝试在SaleIDDropDown.DataBind()上花费更多时间;命令。那必须刷新数据,但我猜你没有在正确的地方或类似的地方做这个......