1

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

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

grdvwFilteredNo1_RowCommand(object sender, GridViewCommandEventArgs e) grdvwFilteredNo2_RowCommand(object sender, GridViewCommandEventArgs e) grdvwFilteredNo3_RowCommand(object sender, 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?谢谢您的帮助。

4

1 回答 1

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 接口的一个。

于 2016-02-26T23:08:19.310 回答