从其 RowCommand 事件中查找网格视图 ID

本文关键字:网格 视图 ID 查找 RowCommand 事件 从其 | 更新日期: 2023-09-27 18:36:37

我有三个网格视图,其ID是:grdvwFilteredNo1, grdvwFilteredNo2, grdvwFilteredNo3

每个都有自己的 RowCommand 事件(每个事件都由一行上的 LinkButton 触发)

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

我希望通过让所有三个网格视图调用相同的 RowCommand 事件来合并代码。(所有三个的事件代码都相同,除了我通过其 ID 标识网格视图的这一行。
这是第一个事件的台词;
Int32 intSelectedEEid = (Int32)grdvwFilteredNo1.DataKeys[rowIndex].值["员工 ID"];)

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

我认为 LinkBtn 的父级是行,行的父级是网格视图。

如何从其 RowCommand 事件中找到网格视图 ID? 感谢您的帮助。

从其 RowCommand 事件中查找网格视图 ID

若要从 RowCommand 事件访问 GridView,您应该使用类似以下内容

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

使用 Parent 不起作用,因为 LinkButton 的父级可能不是直接的 GridViewRow,而是它的 ItemTemplate,相反,命名容器将遍历祖先的链,直到找到实现 INamingContainer 接口的父级。