我有三个GridView,其ID是: grdvwFilteredNo1,grdvwFilteredNo2,grdvwFilteredNo3
每个都有自己的RowCommand事件(每个事件都由一个LinkButton触发)
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?谢谢你的帮助。
答案 0 :(得分:0)
要从RowCommand事件中访问GridView,您应该使用类似这样的内容
GridViewRow row = ((e.CommandSource as LinkButton).NamingContainer) as GridViewRow;
GridView grd = row.NamingContainer as GridView;
使用Parent不起作用,因为LinkButton的父级可能不是直接GridViewRow而是它的ItemTemplate,而是NamingContainer将遍历祖先的链,直到找到实现INamingContainer接口的链。