程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET2.0 GridView小技巧匯粹

ASP.NET2.0 GridView小技巧匯粹

編輯:.NET實例教程
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)
           {
       &nbsp;       CheckBox cb1 = (CheckBox)gvr.FindControl("check");
               cb1.Checked = cb.Checked;
           }
       }
    }
 



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved