Asp.net GirdView进阶用法
今天我们来探讨下GridView的更进一步的用法:
- 通过行列获取单元格数据
如果我们需要获取GridView控件中某个单元格的数据,可以采用如下思路。首先,在GridView控件的 SelectedIndexChanging事件中,通过Int index=e.NewSelectedIndex获取选中行的索引,然后通过gvShow.Rows[index].Cells[0].Text;获取选中行对应列的值。
- GridView两个重要属性
属性名称 |
说明 |
DataKeyNames |
用来获取或指定GridView中主键字段名称的数组,多个主键字段之间使用逗号隔开 |
DataKeys |
用来获取GridView中使用DataKeyNames设置的每一行主键值的对象集合 |
使用代码设置绑定主键
GridView控件ID.DataKeyNames=new string[]{
“主键字段名称1”,”主键字段名称2”,….
}
当我们对GridView设置了主键值后,我们就可以通过一定的方式将其获取出来!
01.单个主键字段的获取方法:
GridView控件ID.DataKeys[index].Value.ToString();
02.多个主键字段的获取方法
GridView控件ID.DataKeys[index][“主键字段名称”].ToString();
或
GridView控件ID.DataKeys[index].Values[“主键字段名称1”].ToString();
DataKeys值的作用:
我们可以通过使用DataKeys值实现值在页面间的传递。
在GridView的SelectedIndexChanging事件中,我们可以通过如下代码获取选中行的主键,并且将主键值传递到其他页面:
1 Int index=e.NewSelectedIndex; 2 3 String key=this.gvHR.DataKeys[index].Value.ToString(); 4 5 Response.Redirect(“modify.aspx?id=”+key);
- GridView中事件处理机制
RowEditing事件:
属性名称 |
说明 |
NewEditIndex |
获取或设置所编辑的行的索引 |
Cancel |
将Cancel属性设置true,可以取消编辑操作 |
需要注意的是:如果将GridView的EditIndex设置为-1时,没有编辑行。
设置编辑行索引的具体代码:
在GridView的RowEditing事件中,书写如下代码:
//设置编辑行索引
this.gvHR.EditIndex=e.NewEditIndex;
//由于页面回发,页面无法保存对象的状态,需重新绑定
MyDBBind();
当我们点击编辑按钮后,界面上会自动出现
更新和取消按钮,此时我们如果点击取消,会出现如下异常信息,
这时,我们可以在GridView的RowCancelingEdit事件中输入如下代码:
gvHR.EditIndex = -1;
LoadData();来解决。
当我们点击更新按钮时,会出现如下提示:
这时,我们需要在RowUpdating事件中书写代码:
RowUpdating事件
我们可以在RowUpdating事件中书写如下代码:
1 int index= this.gvHR.EditIndex; 2 3 string userid = gvHR.DataKeys[index].Value.ToString(); 4 5 string username = (gvHR.Rows[index].FindControl("txtName") as TextBox).Text; 6 7 string gender = (gvHR.Rows[index].FindControl("ddlGender") as DropDownList).SelectedValue; 8 9 string phone = (gvHR.Rows[index].FindControl("txtTelephone") as TextBox).Text; 10 11 string post = (gvHR.Rows[index].FindControl("ddlPost") as DropDownList).SelectedValue; 12 13 string address = (gvHR.Rows[index].FindControl("txtAddress") as TextBox).Text; 14 15 UpdateData(userid,username,gender,phone,post,address); 16 17 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), 18 19 "info", "<script>alert('更新成功|!')</script>"); 20 21 22 23 gvHR.EditIndex = -1; 24 25 LoadData();
这样,我们就实现了编辑状态下数据的更新和取消。其实,我们只要掌握了GridView的事件机制,并且能够在对应的事件中书写代码,就不会出现异常。
当然,GridView的事件还有很多,这里我们只是拿出典型的几个事件进行了说明,后续对GridView的内容还会继续更新。