ASP.NET2.0 GridView小技巧匯粹

來源:互聯網
上載者:User
1)GridView 綁定資料來源控制項,需要有編輯和刪除選項按鈕時,資料來源控制項必須提供SQ操作L語句或預存程序調用,一般,我的推薦做法是,使用無意義的SQL語句或儲存過 程來使GridView的編輯和刪除按鈕可以產生,具體的編輯更新和刪除操作在代碼運行時而不是在控制項設計時指定,雖然多寫了一點代碼,但是對以後的擴充 應用是很有好處的,建議所有的資料操作,不管是簡單還是複雜的,都使用三層結構,這樣從WEB到WIN之間的軟體轉換將十分輕鬆.而且,統一使用三層結 構,雖然代碼量會多一點,但是可控制性是相當好的,如果組織合理應用統一,這樣的做法也是相當高效的.

2)可以指定GridView繫結資料行的ReadOnly屬性為false,這樣在編輯生效時,將不會將此列自動化佈建為textbox形式的可編輯控制項.

 

3) 使用GridView控制項中的BoundField子控制項可以綁定一個資料表的某個欄位列,只要將BoundField控制項的DataField屬性設定 為要繫結資料表的欄位名,如果是預存程序select返回的比如@A,那麼就將DataField設定成A;並且,可以使用 DataFormatString屬性來格式化欄位輸出,注意,同時要將HtmlEncode屬性設定為false;HeaderText屬性則是 GridView表現出來的欄位名稱,一般將其設定為中文欄位名;要設定一些其他的樣式屬性,比如靠左對齊,背景色等,通過"樣式"這個屬性來選擇設定;另 外,如果綁定到欄位的資料為空白時顯示的預設值,則可以通過設定NullDisplayText欄位來顯示.

4) 要設定GridView的主鍵,可以在其DataKeyNames屬性中設定.一般,如果資料來源返回5個欄位,如果想自動產生列,可使 AutoGenerateColumns為true,如果要有選擇的自己設定要顯示的列或需要對顯示的效果做設定,則先使 AutoGenerateColumns為false,然後在GridView的編輯列選項操作中,自己使用BoundField控制項的 DataField屬性設定為要繫結資料表的欄位名,並做相應的顯示設定即可.

 

5)GridView 有一些常用的事件,我在使用中經常用到的是:RowCommand(只要GridView控制項中有按鈕按下就會激發,並可找到是GridView的當前第 幾行),RowDeleting(刪除前,做一些判斷或準備工作,我建議直接在此處調用中間業務層的資料操縱服務方法,如果判斷結果是刪除操作不能進行, 則可以設定e.cancel=true,則不會執行資料來源控制項中指定的SQL語句或預存程序),.RowDeleted(刪除後,做一些善後工 作),RowUpdating(更新前),RowUpdated(更新後),RowEditing(按編輯按鈕時觸發),Sorting(排序 前),Sorted(排序後),SelectedIndexChanging(選擇新行時,還沒有做任何新動作前激 發),SelectedIndexChanged(選擇新行,並執行操作時激發). 需要注重說明的是,所有操作"前"激發的事件,都有"ing"尾碼名,這裡一般進行一些判斷工作,判斷操作的條件是否滿足,如果滿足,則其後執行設計時數 據原始檔控制的SQL語句或預存程序,但是,如果條件不滿足,則可以使e.Cancel = true,這時將不會繼續執行SQL語句和預存程序.

6) 一般,ASP.NET控制項都有一個專門處理用戶端指令碼的屬性,此屬性關聯一些javaScript等的指令碼代碼,這些用戶端指令碼代碼將最優先執行,來進行 一些選擇或判斷,比如:javascript:event.returnValue = window.confirm("你真的想要刪除該銷售單嗎?"),返回true,將正常運行此控制項綁定的事件處理常式,如果返回false,則就好象沒 有點擊此控制項一樣,並不會向下執行服務端代碼.

7)GridView 內部的一些按鈕型控制項(ButtonField),點擊時觸發的處理事件是相同的,可以通過設定CommandName屬性的不同字串來加以區分,如, 在RowCommand事件中,可以通過e.CommandName屬性來擷取點擊的特定ButtonField的CommandName是否與指定的字 符串相同,從而進入不同的流程處理.

8)GridView 的DataSource屬性綁定到集合類型上,如:數組,泛型類,DataSet,DataTable等.而它的DataSourceID屬性則綁定到特 定的資料來源控制項上,如SqlDataSource,ObjectDataSource,XmlDataSource等.然後,調用DataBind()方 法具體綁定資料,DataBind()前只是指定資料來源.

9) 一個小技巧:當GridView綁定一個對象集合時,如果該對象的公開屬性是英文,則GridView的列名也是英文,如果該對象的公開屬性是中文,則 GridView的列名也是中文,這個技巧可以不同設定GridView的相關屬性而得到中文欄位顯示的GridView報表.在一些要求特殊的場合還是 一個不錯的解決方案.

2、為GridView加入全選
 <asp:TemplateField HeaderText="全選">
        <HeaderTemplate>
                <asp:CheckBox ID="checkall" runat="server" Text="全選" 
                        AutoPostBack="true" OnCheckedChanged="checkAll" />
         </HeaderTemplate>
          <ItemTemplate>
                   <asp:CheckBox ID="check" runat="server" Text="選擇" />
            </ItemTemplate>     
</asp:TemplateField>

   protected void checkAll(object sender, EventArgs e)
  {
       CheckBox cb = (CheckBox) sender;
       if (cb.Text == "全選")
       {
           foreach (GridViewRow gvr in gvLessons.Rows)
           {
               CheckBox cb1 = (CheckBox)gvr.FindControl("check");
               cb1.Checked = cb.Checked;
           }
       }
    }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.