从RowCommand事件中查找Gridview ID

时间:2016-02-26 22:57:17

标签: c# asp.net gridview rowcommand

我有三个GridView,其ID是: grdvwFilteredNo1,grdvwFilteredNo2,grdvwFilteredNo3

每个都有自己的RowCommand事件(每个事件都由一个LinkBut​​ton触发)

grdvwFilteredNo1_RowCommand(对象发送者,GridViewCommandEventArgs e) grdvwFilteredNo2_RowCommand(对象发送者,GridViewCommandEventArgs e) grdvwFilteredNo3_RowCommand(对象发送者,GridViewCommandEventArgs e)

我希望通过让所有三个Gridview调用相同的RowCommand事件来整合代码。 (这三个事件的代码是相同的,除了这一行,我用它来识别gridview的身份。
这是第一个事件的行;
 Int32 intSelectedEEid =(Int32) grdvwFilteredNo1 .DataKeys [rowIndex] .Values [" EmployeeID"];)

我原以为我可以使用变量而不是gridview ID,但我似乎无法获取gridview ID。使用这个 GridView gView =((Control)e.CommandSource).Parent.Parent as GridView;
gView.ID返回null。

我在想LinkBtn的父级是行,而行的父级是gridview。

如何在RowCommand事件中找到gridview id?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

要从RowCommand事件中访问GridView,您应该使用类似这样的内容

GridViewRow row = ((e.CommandSource as LinkButton).NamingContainer) as GridViewRow;
GridView grd = row.NamingContainer as GridView;

使用Parent不起作用,因为LinkBut​​ton的父级可能不是直接GridViewRow而是它的ItemTemplate,而是NamingContainer将遍历祖先的链,直到找到实现INamingContainer接口的链。