.NET 2.0 Web控件GridView的使用:如何使用隐藏的主键列
.NET 2.0的Web控件GridView用的很少,对比1.0的DataGrid的优点还没发现,就发现一个很弱的地方,对于每行数据的主键一般用隐藏列保存的,原来DataGrid的隐藏列是可以在DataGrid事件中获得值的,而GridView却不对隐藏列赋值,在事件中对指定行数据进行操作竟然无法获取在数据库中该行所对应的数据,不知道是不是一种退化,只好想办法绕弯路去实现了.
编辑/删除操作一般在模板列中使用按钮控件来触发,因此,在数据绑定RowDataBound事件中可以将主键值赋给按钮控件的事件可选参数CommandArgument
1 protected void grvTest_RowDataBound(object sender, GridViewRowEventArgs e) {
2 LinkButton lnk = e.Row.FindControl("lnkSignUp") as LinkButton;
3
4 if (lnk != null) {
5 lnk.Attributes.Add("OnClick", "return ConfirmSignUp()");
6 lnk.Visible = true;
7 lnk.CommandArgument = e.Row.Cells[0].Text;
8 }
9 }
2 LinkButton lnk = e.Row.FindControl("lnkSignUp") as LinkButton;
3
4 if (lnk != null) {
5 lnk.Attributes.Add("OnClick", "return ConfirmSignUp()");
6 lnk.Visible = true;
7 lnk.CommandArgument = e.Row.Cells[0].Text;
8 }
9 }
然后在RowCommand事件中取参数e的CommandArgument属性值就可以了
1 protected void grvReport_RowCommand(object sender, GridViewCommandEventArgs e) {
2 string id = Convert.ToString(e.CommandArgument);
3![](https://www.cnblogs.com/Images/dot.gif)
4 }
2 string id = Convert.ToString(e.CommandArgument);
3
![](https://www.cnblogs.com/Images/dot.gif)
4 }