轉自: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屬性來判斷更新過程中是否發生了異常,如果沒有,就是使用者資料更新成功。