在 ASP.NET 的 C# 中更新 DropDownList 的数据源
Updating the DataSource of a DropDownList in ASP.NET's C#
我有一个使用 DropDownList 的编辑表单,使用数据源连接到 SQL 服务器 table。此编辑表单允许用户将 table 的 "IsDeleted" 列值设置为 1,这将在应用程序的所有查询中隐藏它。 (所以事务仍然存在于数据库中,但不存在于应用程序中)
我遇到的问题是,如果编辑表单所在的页面没有完全离开,然后再次输入,该条目仍然保留在DataSource中。
所以基本上,DataSource 没有更新。 (这不是 运行 它的 select 语句并重新填充直到整个页面重新加载)。我已尝试使用页面刷新,但它似乎不起作用,只能转到完全不同的页面然后返回似乎更新了数据源。
如何以编程方式刷新 DataSource 的内容,而不必重新创建整个 DataSource 本身?
下次您可能想添加一些代码。
我现在最好的猜测是你没有做任何 OnPostback。
所以我最终采取了我不想做的事情,希望有一种 "Best-practice" 的方法来做到这一点(希望已经 built-in 进入数据源),但是好像不是这样。
所要做的只是再次 re-assign 数据源的参数,然后将数据源分配回 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";
}
我有一个使用 DropDownList 的编辑表单,使用数据源连接到 SQL 服务器 table。此编辑表单允许用户将 table 的 "IsDeleted" 列值设置为 1,这将在应用程序的所有查询中隐藏它。 (所以事务仍然存在于数据库中,但不存在于应用程序中)
我遇到的问题是,如果编辑表单所在的页面没有完全离开,然后再次输入,该条目仍然保留在DataSource中。
所以基本上,DataSource 没有更新。 (这不是 运行 它的 select 语句并重新填充直到整个页面重新加载)。我已尝试使用页面刷新,但它似乎不起作用,只能转到完全不同的页面然后返回似乎更新了数据源。
如何以编程方式刷新 DataSource 的内容,而不必重新创建整个 DataSource 本身?
下次您可能想添加一些代码。 我现在最好的猜测是你没有做任何 OnPostback。
所以我最终采取了我不想做的事情,希望有一种 "Best-practice" 的方法来做到这一点(希望已经 built-in 进入数据源),但是好像不是这样。
所要做的只是再次 re-assign 数据源的参数,然后将数据源分配回 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";
}