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;
}
}
}