asp.net中GridView綁定到數據源時,可以自動顯示數據源的各個字段。只要設定其AutoGenerateColumns為TRUE即可。但這,自動顯示有其不好的一面,因為不能自義定控制顯示的樣式。
解決以上的辦法就是指定需要GridView顯示的字段,GridView控件支持以下七種類型的Field:
● BoundField : 將數據項顯示為文本
● CheckBoxField : 將數據項顯示為復選框
● CommandField : 使用鏈接來支持編輯、刪除或選中行
● ButtonField : 將數據項顯示為按鈕(ImageButton、LinkButton、Button)
● HyperLinkField : 將數據項顯示為超鏈接
● ImageField : 將數據項顯示為圖片
● TemplateField: 自定義數據項的外觀
以上,各Field的父類都為DataControlFiled.所以,下面先談談DataControlField。
DataControlField 類用作所有數據控件字段類型的基類。數據綁定控件使用數據控件字段表示數據字段。
DataControlField定義了一些共公的屬性,其子Field都可以使用。
● HeaderText/HeaderImageUrl : 標題欄字段/標題欄的圖像URL
● FooterText : 腳注項的文本
● AccessibleHeaderText : 一個字符串,表示由屏幕閱讀器讀取的縮寫文本。
● Control: 獲取對Field內數據控件的引用
● InsertVisible: 插入新記錄時,此列是否可見。(不能在GridView控件中使用)
● HeaderStyle/FooterStyle/ItemStyle/ControlStyle : 標題項/腳注項/數據項/子WEB控件的樣式
● SortExpression : 為數據項指定排序表達式
GridView在顯示狀態(tài),BoundField總是直接把數據項顯示為文本;在編輯狀態(tài),BoundFiled將數據項顯示為一個單行的文本框
2.1 BoundField幾個種要屬性:
除了其父類DataControlField的幾個屬性外,還有以下幾個屬性
● DataField : 顯示的字段
● DataFormatString : 字段格式化
● HtmlEncode / HtmlEncodeFormatString: 獲取或設置一個值,該值指示在 BoundField 對象中顯示字段值之前,是否對這些字段值進行 HTML 編碼。
注: FormatString經常用來格式化數字、日期、字符串、自定義類型。
關于字符格式化,參見以下MSDN:http://msdn.microsoft.com/zh-cn/library/26etazsy.aspx,
或:http://www.cnblogs.com/tianhao960/archive/2006/06/22/433255.html
例1:使用GridView綁定字段
2.2 除了以上這些屬性外,還有以下幾個屬性比較有用
● ApplyFormatInEditMode: 若要在編輯模式中將格式化字符串應用到字段值,則為 true;否則為 false。默認為 false。
● Readonly: 防止該數據項進入編輯模式。
● NullDisplayText : 當數據項為NULL時顯示的文本
CheckBoxField會在相應的列內顯示一個復選框,在沒有進入編輯模式時,其復雜框處于禁用狀態(tài)。
CheckBoxField通過設置 Text 屬性,可以在每一個復選框旁邊顯示一個標題
使用CommandField可以定制GridView控件中Edit、Delete、Update、Cancel、Select等按鈕的外觀。
需要使用CommonField時,不要啟用GridView的AutoGenerateEditButton和AutoGenerateDeleteButton屬性。因為可以直接使用CommandField
CommandField的一些屬性:
● ButtonType:指定Button類型、可以有Button、Image、Link類型
● CancelText/CancelImageUrl: Cancel按鈕中的文本/圖像URL
● DeleteText/DeleteImageUrl: Delete按鈕中的文本/圖像URL
● InsertText/InsertImageUrl: Insert按鈕中的文本/圖像URL
● EditText/EditImageUrl: Edit按鈕中的文本/圖像URL
● UpdateText/UpdateImageUrl: Update按鈕中的文本/圖像URL
● SelectText/SelectImageUrl: Select按鈕中的文本/圖像URL
● NewText/NewImageUrl: New按鈕中的文本/圖像URL
● ShowEditButton/ShowDeleteButton/ShowCancelButton/ShowSelectButton/ShowInsertButton: 是否顯示相應按鈕
● CauseValidation:點擊按鈕時是否啟用校驗
● ValidationGroup: 指定和編輯按鈕相關驗證控件組的名稱
使用ButtonField可以在GridView中顯示一個按鈕,使用它可以完成自定義或標準的編輯命令
點擊GridView中的ButtonField字段,會觸發(fā)GridView中的OnRowCommand事件??梢栽谶@個事件中處理相關的命令事件。
ButtonField有以下幾個屬性
● ButtonType : Button類型,可以為Button、Image、LinkButton
● CauseValidation : 指定按鈕點擊時是否引發(fā)驗證
● CommandName : 指定ButtonField關聯的標準編輯命令,可以為Delete、Edit、Update、Cancel。或者,可以自定義
● DataTextField/DataTextFormatString : 指定按鈕文本的數據項/數據項格式
● Text : 按鈕文本
● ValidationGroup : 和按鈕相關驗證控件組的名稱
通過CommandName屬性可以使用BuffonField關聯標準的編輯命令,例如給CommandName屬性賦"Delete"就可以得到一個具有刪除功能的按鈕
例2:一個通過點擊GridView中的Button,進行數據更新的例子
HyperLinkField用來鏈接到其他頁面。當創(chuàng)建兩具主從表單的時候,HyperLinkField非常有用。
HyperLinkField具有以下屬性:
● DataNavigateUrlFields: 在DataNavigateFormatString中使用的列名稱
● DataNavigateFormatString: 格式鏈接字符串
● DataTextField/DataTextFormatString: 超鏈接文本/超鏈接文本格式化
● NavigateUrl: 鏈接到其它頁面的URL
● Target : 鏈接目標,可以使用:_blank/_parent/_self/_top
● Text: 超鏈接的文本
例3:HyperLinkField使用舉例,在一個頁面中使用frames技術,可以不用整頁刷新顯示主從表
==FrameMaster.aspx==
==FrameDetails.aspx==
ImageFIeld用來顯示保存在服務器上的圖片,不能用ImageField來顯示保存在數據庫上的圖片。
ImageField有以下幾個屬性:
● AlternateText : 預備文本
● DataAlternateTextField : 使用指定列的值作為預備文本
● DataAlternateTextFormatString : 預備文本格式字符串
● DataImageUrlField : 存放圖片路徑的列名
● DataImageUrlFormatString : 圖片路徑格式字符串
● NullImageUrl : 指定預備圖片
例4: 使用ImageField,實現一個簡單的相冊
使用TemplateField可以在GridView控件的數據列中添加任何內容,例如HTML、數據綁定表達式或者ASP.NET控件等。
可以使用TemplateField定制用戶界面或者給被編輯字段添加驗證
TempateField支持以下6種類型的模板
● ALternatingItemTemplate : 間隔行模板
● EditItemTemlpate : 編輯行模板
● FooterTemplate : 腳注模板
● HeaderTemplate : 標題模板
● InsertItemTemplate: 插入行模板(不支持GridView控件)
● ItemTemplate: 每個顯示行模板
例5:TemplateField舉例,
聯系客服