这两个都在更新数据时触发,不同之外在于 GridView_RowUpdated 在更新到数据库后发生,而 GridView_RowUpdating 在更新到数据库之前发生。
一般在GridView_RowUpdating 中都会有一些处理:
1、有一些字段没有在GridView中出现但是也需要更新(例如更新时间)
2、有一些字段出现在了GridView中,但是并不需要更新到数据库
3、有一些字段需要转换一下才可以更新(一般都是一些dropdownlist或者checkbox等)
4、其他需要对值在更新前进行一下处理的情况
总之,GridView_RowUpdating负责在把请求发送到数据库之前,将数据处理得符合数据库的要求
而GridView_RowUpdated是在数据库更新完之后才执行的,一般会执行一些后期的绑定工作,比如重新绑定关联的DetailView、FormView等
一般做行更新的时候用第二个就行了.
下面是使用的一块例代码块:核心语句还是得到当前更新行的控件.
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
sqlcon = new SqlConnection(strCon);
string sqlstr = "update 表 set 字段1='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',字段2='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',字段3='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where id='"
+ GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
sqlcom=new SqlCommand(sqlstr,sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
GridView1.EditIndex = -1;
bind();
}
第一个事件为更新成功后触发的吧.
同意楼上的...