【问题标题】:Updating the DataSource of a DropDownList in ASP.NET's C#在 ASP.NET 的 C# 中更新 DropDownList 的数据源
【发布时间】:2017-01-11 14:51:03
【问题描述】:

我有一个使用 DropDownList 的编辑表单,它使用 DataSource 连接到 SQL 服务器表。此编辑表单允许用户将表的“IsDeleted”列值设置为 1,然后将其从应用程序的所有查询中隐藏。 (所以事务仍然存在于数据库中,但不存在于应用程序中)

我遇到的问题是,如果没有完全离开编辑表单所在的页面,然后再次进入,该条目仍然保留在DataSource中。

所以本质上,DataSource 没有更新。 (在重新加载整个页面之前,它不会运行其 select 语句并重新填充)。我尝试使用页面刷新,但它似乎不起作用,只是完全转到另一个页面然后回来似乎更新了 DataSource。

如何以编程方式刷新 DataSource 的内容,而不必重新创建整个 DataSource 本身?

【问题讨论】:

    标签: c# asp.net visual-studio webforms datasource


    【解决方案1】:

    下次您可能想添加一些代码。 我现在最好的猜测是你没有在 OnPostback 做任何事情。

    【讨论】:

    • 除了设计人员的 ASP 标记之外,我现在实际上没有任何用于 DataSource 和 DDL 的代码。 (忽略填充一些文本框的 DDL 上的 SelectedIndexChanged 事件,但这与问题无关)也就是说,我已经阅读了这个回发的东西,看起来我对该主题的知识存在巨大的空白。我希望你已经引导我走上一条道路,让我找到可以解决我的问题的东西。但最后我正在寻找一种编程方式来执行您在设计器中单击“刷新架构”时所做的事情
    【解决方案2】:

    所以我最终采取了我不想做的事情,希望有一种“最佳实践”的方式来做到这一点(并且希望已经内置到 DataSources 中),但似乎那是不是。

    只需将 DataSource 的参数重新分配给它,然后将 DataSource 分配回 DropDownList,就好像我正在创建一个新的一样。

    我创建了以下方法,然后在删除按钮的事件结束时调用该方法。

    protected void DropDownList_Reload()
        {
            MyDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
            MyDataSource.SelectCommand = "SELECT * FROM [tblMyTable] WHERE [IsDeleted] <> 1";
    
            cbxDropDownList.DataSourceID = "MyDataSource";
            cbxDropDownList.DataTextField = "MyHeader";
            cbxDropDownList.DataValueField = "MyHeader";
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 2010-10-22
      • 2023-04-10
      • 1970-01-01
      • 2018-02-23
      相关资源
      最近更新 更多