【问题标题】:SqlDataSource not reselecting data from database when data is changed更改数据时,SqlDataSource 不会从数据库中重新选择数据
【发布时间】:2013-08-12 19:03:17
【问题描述】:

我有一个由 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>

我遇到的问题是,当通过我正在制作的 Web 界面更改某些数据时(例如,我删除了一个项目,或者更改了它的标题)下拉菜单会填充旧数据,即使它数据库中显然发生了变化(我使用 SQL Server Studio 进行了检查)。如果我重新加载页面,那么 Dropdown 最终会正确填充。

我需要一种方法来“强制”重新获取/选择数据,但到目前为止我的努力都失败了。我试过用代码做,但没有生效。

DropDownDataSource.Select(DataSourceSelectArguments.Empty);
DropDownDataSource.DataBind();

SaleIDDropDown.DataBind();

它仍然不会更新下拉列表,即使它已运行。

如何制作下拉列表及其 SqlDataSource 并将其推送到命令页面?

【问题讨论】:

    标签: c# asp.net sql sql-server datasource


    【解决方案1】:

    请注意,即使您的禁用视图状态的解决方案有效,但它远非最佳,因为它会在每次回发时从数据库加载数据。

    如果这是一个繁忙的网站,你真的不想要那个。尝试在 SaleIDDropDown.DataBind() 上花费更多时间;命令。那必须刷新数据,但我猜你没有在正确的地方或类似的地方这样做......

    【讨论】:

    • 谢谢。我以为我已经通过禁用 ViewState 解决了这个问题,但在这个过程中我又制造了大约 10 个问题。问题最终是我的DataBindPage_Load 中,所以它会绑定数据并然后 执行从下拉列表中删除项目的事件。我需要在删除按钮的事件处理程序中添加另一个 DataBind
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2010-12-31
    • 1970-01-01
    • 2013-07-16
    • 2014-01-25
    相关资源
    最近更新 更多