我有一个 gridview,我以编程方式设置数据源并将其数据绑定到对象集合。对于创建的每一行,我在字段中使用不同的方法从对象中提取相关信息,如下所示:
<asp:TemplateField HeaderText="Aliases">
<ItemTemplate>
<%# ( (MyItem)Container.DataItem).Aliases.ToString() %>
</ItemTemplate>
</asp:TemplateField>
我的问题是在OnRowDeleting
方法我希望能够访问该方法DataItem
使用例如MyGridView.Rows[e.RowIndex].DataItem
或以其他方式。但我找不到如何配置Gridview
保留DataItem
. 是否可以访问DataItem
使用过,我将如何配置它来做到这一点?如果不可能,我可以访问方法绑定的值吗?或者我是否必须采用 B 计划并将数据源对象集合重写为数据表,然后使用 datakeysnames?
MyGridView.Rows[e.RowIndex].DataItem
通常应该可以工作,但我猜您可能依赖视图状态来保留回发时的网格数据。在这种情况下,您将得到DataItem
属性为 NULL。
解决方法可以是在页面生命周期早期的每个回发中始终将网格与实际数据重新绑定(例如page_load
).
但是,就您而言,您可以很好地使用DataKeyNames
。与您的看法相反,您不需要 DataTable 即可使此属性正常工作。例如,如果您的类具有名为ItemId
指示您的对象的键,然后您可以使用DataKeyNames="ItemId"
在标记中并引用它OnRowDeleting
using Keys http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewdeleteeventargs.keys.aspx事件参数的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)