国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
RowDataBound事件
【轉(zhuǎn)】RowDataBound事件(2009-02-12 14:43:24)轉(zhuǎn)載標(biāo)簽: it 分類: 技術(shù)類 
【轉(zhuǎn)】RowDataBound事件
2008-12-25 14:22
RowDataBound事件
在創(chuàng)建gridView控件時(shí),必須先為GridView的每一行創(chuàng)建一個(gè)GridViewRow對(duì)象,創(chuàng)建每一行時(shí),將引發(fā)一個(gè)RowCreated事件;當(dāng)行創(chuàng)建完畢,每一行GridViewRow就要綁定數(shù)據(jù)源中的數(shù)據(jù),當(dāng)綁定完成后,將引發(fā)RowDataBound事件。如果說(shuō)我們可以利用RowCreated事件來(lái)控制每一行綁定的控件,那么我們同樣可以利用RowDataBound事件來(lái)控制每一行綁定的數(shù)據(jù),也就是讓數(shù)據(jù)如何呈現(xiàn)給大家。
還舉同樣的例子,在數(shù)據(jù)表中,存在性別列,上面我們用DropListDown控件的DataBounding來(lái)表示出了中文的性別,但是畢竟不太美觀,我們現(xiàn)在可以利用Label控件和RowDataBound事件來(lái)實(shí)現(xiàn)完美的中文性別顯示。RowDataBound,
首先,還是把性別列,設(shè)置為模板列,并添加一個(gè)Label控件,將Label控件綁定到數(shù)據(jù)源的性別段,然后我們?cè)贕ridView控件屬性的事件列表中雙擊RowDataBound,生成如下事件:
Example:
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//判斷當(dāng)前行是否是數(shù)據(jù)行
        if (e.Row.RowType == DataControlRowType.DataRow)
        { //用FindControl方法找到模板中的Label控件
Label lb1= (Label)e.Row.FindControl("Label1");
//因?yàn)镽owDataBound是發(fā)生在數(shù)據(jù)綁定之后,所以我們可以
//判斷Label綁定的數(shù)據(jù),如果是True,就更改其text屬性為男
                if (lb1.Text== "True")
                      lb1.Text = "男";
                else
                      lb1.Text = "female";
        }
    }
 
3、RowType
RowType可以確定GridView中行的類型,RowType是玫舉變量DataControlRowType中的一個(gè)值。RowType可以取值包括 DataRow、Footer、Header、EmptyDataRow、Pager、Separator。很多時(shí)候,我們需要判斷當(dāng)前是否是數(shù)據(jù)行,通過(guò)如下代碼來(lái)進(jìn)行判斷:
   if (e.Row.RowType == DataControlRowType.DataRow)
 
4、RowDeleting和RowDeleted事件
RowDeleting發(fā)生在刪除數(shù)據(jù)之前,RowDeleted發(fā)生在刪除數(shù)據(jù)之后。
使用RowDeleting事件,可以在真正刪除前再次確認(rèn)是否刪除,可以通過(guò)設(shè)置GridViewDeleteEventArgs.Cancel=True來(lái)取消刪除;也可以用于判斷當(dāng)前數(shù)據(jù)庫(kù)記錄數(shù),如果只剩一條記錄且數(shù)據(jù)庫(kù)不能為空則提示并取消刪除操作。
使用RowDeleted事件,可以在刪除后,通過(guò)GridViewDeletedEventArgs的Exception屬性判斷刪除過(guò)程中是否產(chǎn)生異常,如無(wú)異常,則可以顯示類似于” 1 Records deleted” 之類的提示信息。
Example:
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//取得當(dāng)前行號(hào),并取得當(dāng)前行的GridViewRow對(duì)象
        int index=e.RowIndex ;
        GridViewRow gvr=GridView1.Rows[index];
//取得當(dāng)前行第二個(gè)單元格中的文字
        str1 = gvr.Cells[1].Text;
//進(jìn)行提示
        Message.Text ="您將刪除一個(gè)用戶,其姓名為"+str1 ;
    }
    protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
{
//如果沒(méi)有產(chǎn)生異常,則提示成功刪除,否則提示刪除失敗
        if (e.Exception == null)
            Message.Text += "<br>您成功刪除了"+str1 ;
        else
            Message.Text += "刪除失敗,請(qǐng)聯(lián)系管理員";
}
5、RowEditing事件
在GridView中的行進(jìn)入編輯模式之前,引發(fā)RowEditing事件,如果您需要在編輯記錄前進(jìn)行某些預(yù)處理,可以在這里操作。如果想取消對(duì)當(dāng)前行的編輯,可以把GridViewEditEventArgs 對(duì)象的 Cancel 屬性設(shè)置為 true即可。
Example:
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
//用NewEidIndex取得當(dāng)前編輯的行號(hào),然后獲取gridviewrow對(duì)象
        GridViewRow gvr = GridView1.Rows[e.NewEditIndex];
 
//判斷,如果當(dāng)前編輯行姓名欄為admin用戶,則取消對(duì)當(dāng)前行的編輯
        if (gvr.Cells[1].Text =="admin")
            e.Cancel = true;
}
 
6、RowUpdating和RowUpdated事件
RowUpdating事件發(fā)生在更新數(shù)據(jù)源之前,RowUpdated發(fā)生在更新數(shù)據(jù)源之后。
我們可以在記錄更新前利用RowUpdating做一些預(yù)處理工作,比如修改密碼時(shí),因?yàn)槊艽a在數(shù)據(jù)庫(kù)中不是明文存儲(chǔ),進(jìn)行了hash,所以在更新密碼前,應(yīng)該生成其hash值,再進(jìn)行更新操作。RowUpdated則可以檢驗(yàn)更新是否成功。
Example:
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        GridViewRow gvr = GridView1.Rows[GridView1 .EditIndex ];
//尋找輸入密碼的控件
        TextBox tb1 = (TextBox)gvr.FindControl("tb_password");
//將此控件中的文本hash后,把password存入NewValues這個(gè)字典中
        e.NewValues ["password"] =tb1.Text .GetHashCode().ToString () ;
 
    }
    protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
//如無(wú)異常,則更新成功
        if (e.Exception == null)
            Message.Text += "更新成功!";
    }
 
7、Keys、OldValues、NewValues集合
Keys字典中一般存放的是數(shù)據(jù)源中的主鍵字段的key和value的對(duì)應(yīng)值,如果主鍵由多個(gè)字段組成,那么Keys為每個(gè)鍵字段添加其字段名稱和值。OldValues中存放的是要更新的行的字段名和原始值,每個(gè)字段為其中的一項(xiàng)。NewValues中存放的是要更新的行的字段名和修改后的值,每個(gè)字段為其中的一項(xiàng)。注意,主鍵字段只存放于keys集合中。
這三個(gè)集合中的每一項(xiàng)都是DictionaryEntry類型的對(duì)象,我們可以用DictionaryEntry.Key來(lái)確定一個(gè)項(xiàng)的字段名稱,用DictionaryEntry.Value來(lái)確定某項(xiàng)的值。
在上面的例子中,為了把密碼明文加密后再存入數(shù)據(jù)庫(kù),我們利用了NewValues字段,重新設(shè)置key為password的項(xiàng)的值。為了保證安全性,我們?cè)诟聰?shù)據(jù)前對(duì)NewValues中的所有值進(jìn)行html編碼:
Example1:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//遍歷NewValues,取得其中每一對(duì)DictionaryEntry對(duì)象
       foreach (DictionaryEntry de in e.NewValues)
 
//de.key就是字段名,如果此處單獨(dú)更新某字段的話,也可以直接填寫(xiě)字段名,//比如 e.NewValues[“password”]
 
       e.NewValues[de.Key] = Server.HtmlEncode(de.Value.ToString());
    }
 
Example2:
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//分別利用Keys、OldValues、NewValues取得主鍵名、原始數(shù)據(jù)和更新后數(shù)據(jù)
        Message .Text = e.Keys["username"] + "的email地址從" + e.OldValues["email"] + "變更為" + e.NewValues["email"];
}
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ASP.NET 2.0 數(shù)據(jù)操作:插入、更新、刪除數(shù)據(jù)時(shí)的事件
理解GridView控件
GridView的RowDataBound事件獲取主鍵方法
GridView內(nèi)容詳解(1)
GridView的RowDataBound事件
如何知道點(diǎn)GridView中的哪一行
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服