从其 RowCommand 事件中查找 Gridview ID

Find Gridview ID from within its RowCommand event

我有三个 GridView,它们的 ID 是: grdvwFilteredNo1, grdvwFilteredNo2, grdvwFilteredNo3

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

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

我希望通过让所有三个 Gridview 调用相同的 RowCommand 事件来合并代码。 (所有三个的事件代码是相同的,除了这一行,我通过它的 ID 识别 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?感谢您的帮助。

要从 RowCommand 事件访问 GridView,您应该使用类似这样的方法

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

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