GridView中按钮列-ButtonField使用心得一二:
在为GridView添加按钮列时,使用,net环境默认提供的可视化操作界面“添加字段”中,会提供以下选项:
当选择界面中选项名为“命令名”,值为“Cancel”时,需要在后台页面当中追加RowCancelingEdit事件,否则当运行页面后,点击该按钮,会报出异常,提示如下:“GridView“GridView1”激发了未处理的事件“RowCancelingEdit”。”
但我本人原来的用意是想取消页面当中的员工外出状态,即通过更改员工外出状态表当中外出状态值(即IsOut),将其由原来的“1”(表示“外出”)置为“0”(表示“已回公司”),因此在这里并不需要借助默认的取消事件“RowCancelingEdit”。只需要定义事件“RowCommand”即可。
1.右击前台页面,选择“查看代码”;
2. 定义事件“RowCommand” 代码如下:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
//判断GridView中按钮名称是否为“End“
if (e.CommandName == "End")
{
receiveinfor = new Receiveinform();
//定义业务逻辑层操作类的实例
int index = Convert.ToInt32(e.CommandArgument);
int hideOutId = (int)GridView1.DataKeys[index].Value;
//更新员工外出状态值,返回更新后影响的行数
int res = receiveinfor.UpdateOutStatus(hideOutId);
//如果更新成功,刷新GridView的值
if (res > 0)
{
BindGrid();
}
else
{
Response.Redirect("<script>alert('对不起,请重试!');</script>");
return;
}
}
}
代码说明:
上面的代码中涉及到以下两句话:
int index = Convert.ToInt32(e.CommandArgument);
int hideOutId = (int)GridView1.DataKeys[index].Value;
第一句是用来获取gridview控件中点击按钮列“end”时,控件中某一行的索引值(e.CommandArgument),需要注意的是控件默认的不同事件里面,获得某一行的索引值,不同事件有不同的方法。
例如上述的RowCommand事件中使用属性 e.CommandArgument,而在RowCancelingEdit事件中使用属性 e.RowIndex。需要注意区分。
第二句,使用Gridview的DataKeys属性,获取gridview控件定义的某一行的主键值,结果返回至整形变量hideOutId中去。