访问用于绑定网格视图的数据或数据项

Tel*_*tha 2 c# asp.net gridview dataitem

我有一个 gridview,我以编程方式为其设置数据源并将其数据绑定到对象集合。对于创建的每一行,我然后在字段中使用不同的方法从对象中提取相关信息,如下所示:

<asp:TemplateField HeaderText="Aliases">
<ItemTemplate>
<%# ( (MyItem)Container.DataItem).Aliases.ToString() %>
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

我的问题是,在该OnRowDeleting方法中,我希望能够DataItem使用 egMyGridView.Rows[e.RowIndex].DataItem或以其他方式访问该方法。但我找不到如何配置Gridview以保留DataItem. 是否可以访问DataItem使用的,我将如何配置它来做到这一点?如果这是不可能的,我可以访问由方法绑定的值吗?或者我是否必须采用计划 B 并将数据源对象集合重写为数据表,然后使用数据键名?

Vin*_*ayC 5

MyGridView.Rows[e.RowIndex].DataItem通常应该可以工作,但我想您可能依赖视图状态来保留回发时的网格数据。在这种情况下,您将获得该DataItem属性为 NULL。

解决方法可以是在页面生命周期的早期(比如page_load)的每个回发中始终将网格与实际数据重新绑定。

但是,就您而言,您可以很好地使用DataKeyNames. 与您的看法相反,您不需要 DataTable 即可使该属性起作用。例如,如果您的类具有名为ItemId指示对象键的属性,那么您可以DataKeyNames="ItemId"在标记中OnRowDeleting使用并在使用事件参数的Keys属性中引用它。