1. 程式人生 > >GridView的RowDataBound事件和DataBound事件

GridView的RowDataBound事件和DataBound事件

 最近在使用gridview,新增模板後,網站對於模板按鈕操作的程式碼很多都是在RowDataBound事件中,照抄使用後,本來沒有問題。但是在這次做gridview的篩選功能的時候,發現一點小問題,就是我的dropdownlist中有一個是和資料庫繫結的,於是在page_load事件中,給這個下拉框新增一個全部的選項。因為我的gridview放在了updatepanel中,每次更新資料後,這個gridview都重新從資料庫獲取。所以每次這樣的時候,這個下拉框的選項又回覆到剛開始的時候,少了我新增的自定義選項。於是我在gridview的RowDataBound事件中寫:

       if (e.Row.RowType == DataControlRowType.DataRow)
                { 
                    DropDownList dd = (DropDownList)GridView1.HeaderRow.FindControl("DropDownList1");
                    ListItem it = new ListItem("all", "all");
                    dd.Items.Insert(0, it);
                }

       結果是我的資料行有多少項,這個下拉框就多加了多少個“all”選項。顯然是不對的。

       仔細看了看,研究了下,終於明白了。每一個數據行繫結後,都呼叫一次這個函式。

        解決辦法:很簡單,看看gridview的事件中,有一個DataBound事件,就明白了。這個應該是全部資料繫結後呼叫的函式吧。這樣就呼叫一次了。每次更新gridview的資料,或者說重新繫結,當在updatapanel中把下拉框也更新了的時候,在這裡重新新增自定義的選項就可以了。