转自:http://blog.163.com/[email protected]/blog/static/556380032009514104737396/
1.RowDataBound事件
在呈现GridView控件之前,控件中的每一行需要绑定到数据源中的一条记录,此时引发RowDataBound事件。在删除按钮添加确定对话框的条款中我们在该事件处理程序中添加了自定义代码,以达到为每个按钮添加对话框的目的。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)//判断某行中否为数据行
{
LinkButton lkbtDel = (LinkButton)e.Row.Cells[9].Controls[0];
lkbtDel.OnClientClick = "return confirm('您真的要删除这一用户吗?');";
//lkbtDel.Attributes.Add("onclick", "return confrim('您真的要删除这一用户吗?');");
}
}
2.RowCommand事件
单击GridView控件中的按钮时,将引发会RowCommand事件,我们可以以此来判断用户点击了哪一种操作按钮。
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
Label1.Text = e.CommandName;
Label2.Text = e.CommandArgument.ToString();
}
CommandName属性值包括Cance、Delete、Edit、Page、Select、Sort、Update,使用CommandArgument属性则可以得到行的索引值,从而为更深层次的定制操作提供了条件。
3.RowEditing事件
在用户单击某一行的“编辑”按钮后,在GridView控件进入编辑模式之前,引发该事件。例如,我们可以得用这一特性对GridView控件中的值进行判断,从而决定是否让用户编辑该行。
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
if (GridView1.Rows[e.NewEditIndex].Cells[1].Text == "12")
{
e.Cancel = true;
}
}
通过NewEditIndex属性可以确定用户单击某一行“编辑”按钮的索引,并在GridView控件的Rows集合中检索到该行,再通过Cells得到一行中指定列的指。如果该傎与“12”相等,则将Cancel属性设为true,从而取消编辑操作。
4.RowUpdating事件
在用户单击某一行的“更新”按钮后,在GridView控件对该行进行更新之前将引发该事件。
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
foreach (DictionaryEntry entry in e.OldValues)
{
Response.Write(entry.Key.ToString()+":"+entry.value.ToString()+"<br>");
}
foreach (DictionaryEntry entry in e.NewValues)
{
Response.Write(entry.Key.ToString() + ":" + entry.value.ToString() + "<br>");
}
}
使用OldValues集合可以获取更新行中的原始字段名称和值,NewValues集合可以获取到更新行中的非键字段名称和修改后的值。这样一来,我们就可以在数据被更新到数据源之前,对用户输入的数据进行检测或进行其他操作。
5.RowUpdated事件
在用户单击某一行的“更新”按钮并且在在在GridView控件对该行进行更新之后,引发该事件。
protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
if (e.Exception == null)
{
Response.Write("数据更新成功!");
}
}
通过Exception属性来判断更新过程中是否发生了异常,如果没有,就是用户数据更新成功。