我正在更新现有的ASP.NET网站。此站点有一个自定义网格控件类,它扩展了GridView控件以添加一些功能。站点中的许多页面使用内置于基本GridView中的声明性双向绑定功能,即列模板调用Bind(),以便可以自动显示和更新数据。这在大多数情况下都很好。然而,当绑定DropDownList控件时,现在出现了一个问题。
最近,我不得不添加一个特性,允许某些表中的记录被标记为“已关闭”,也就是说,插入到其他表中的新记录不能再引用这些记录。
编辑具有可关闭的子记录的DropDownList的数据网格行时,SelectedValue属性可能绑定到列表中不存在的ID。这将导致引发ArgumentOutOfRange异常。我只希望DropDownList默认为no selection,如果记录已关闭,因此不在列表中。
我可以通过编程在RowDataBound事件中设置DropDownList的选定索引。但我找不到一种方法来更新值,同时保留现有的更新功能。
实际问题是:
或者,如果有一种方法可以使用OnRowUpdating事件将数据手动添加到更新中,那么就可以了。我尝试过在GridViewUpdateEventArgs类上向NewValues字典添加值,但似乎不起作用。请注意,网格绑定到对象列表,而不是DataSourceControl派生控件。
任何帮助都将不胜感激。谢谢