【问题标题】:ASP GridView and DropDownListASP GridView 和 DropDownList
【发布时间】:2015-02-06 20:28:51
【问题描述】:

我有一个带有 GridView 控件的 asp 页面。网格视图中的一列是下拉列表。使用页面加载事件上的 RowDataBound 事件填充下拉列表。但是,列表中的选项之一在选择时会弹出一个对话框,允许用户将新项目添加到列表中,并且新添加的项目将成为该下拉列表的选定项目。这部分我工作得很好,但我希望能够将新项目添加到网格中每一行的下拉列表中。在某种程度上,我如何在页面加载后重新绑定所有行中的下拉列表,而不必遍历每个字段?

【问题讨论】:

  • 所有下拉列表是否都来自一个公共的共享数据源?

标签: c# asp.net gridview


【解决方案1】:

如果所有 DDL 都有一个共享的 DataSource,那么它应该只是在添加新列表项后强制回发的问题。但是如何添加新的列表项?

如果您的弹出窗口只是将新的 html <option> 标记添加到 html <select> 标记,这与更新 DDL 数据源不同。

要让所有 DDL 显示新列表项,您的弹出窗口必须执行更新 DDL 数据源的回发,并且 GridView 中的所有 DDL 控件都需要重新绑定。

假设 DDL 控件通过 DataSourceID 属性连接到它们的数据源,这将在回发时自动发生。如果您正在使用 DataSource 属性,那么您将必须为每个 DDL 控件显式调用 DataBind(),我想您说过您正在GridView RowDataBound 事件。

或者,您可以遍历所有 ddl 控件客户端并将相同的项目添加到每个控件,但是下次刷新页面时您将丢失所有这些更改,我不认为那是什么你想要的。

【讨论】:

  • 谢谢。我能够将新值添加到共享数据源,并且所有列表都在回发时更新。要将新值设置为添加它的特定下拉列表的选定值,我必须将该值保留在隐藏字段中,然后可以在 Postback 和 Databind() 之后访问它。
猜你喜欢
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 2015-08-20
  • 1970-01-01
相关资源
最近更新 更多