|
在顯示和編輯模式下自定義列的外觀
默認情況下,DataGrid用預設大小的列顯示數據。當你將行設置為編輯模式時,該控件將所有可編輯數據顯示在TextBox中,不管是什麼類型的數據。
如果你想自定義列的內容,則將列設定為模板列,模板列的工作方式與Dataist或者Repeater控件中的項模板類似。差別之處僅在於你定義的是列的外觀不是行的外觀。
定義模板列的時候,可以具體設定下面這些模板類型:
1 使用項模板來自定義數據的一般外觀。
2 將行設為編輯模式時使用編輯項模板來具體設定列的顯示。它允許你具體設置一個控件而不是編輯模式下默認的TextBox.
3 Header模板和Footer模板允許你分別自定義控件的Header和Footer.(只有將DataGrid的ShowFoot屬性設為True,才會顯示表的尾部。)
下面的例子是一個顯示布爾數據的模板列的HTML語法。項模板和編輯模板都使用一個CheckBox來顯示值。項模板中的CheckBox是不可用的,使用者就不能勾選它,而在編輯項模板中CheckBox好似允許用戶選擇的。
<columns>
<asp:TemplateColumn HeaderText=」Discontinued」>
<ItemTemplate>
<asp:Checkbox runat =」server」enabled=false name=」Checkbox2」
ID=」checkbox2」
Checked=』<%#DataBinder.Eval(Container,」Dataltem.Discontinued」)%>』>
</asp:Checkbox>
</ItemTemplate>
<EditltemTemplate>
<asp:Checkbox
runat=」server」name=」Checkbox2」ID=」Checkbox2」
Checked=』<%#DataBinder.Eval(Container,」DataItem.Discontinued」)%>』>
</asp:Checkbox>
</EditltemTemplate>
</asp:TEmplateColumn>
</Columns>
注意:如果在編輯模板中使用一個CheckBox,要意識到在運行時,表項單元格實際上還包含了除了CheckBox自身以外的幾個LiteralControl控件,任何時候你知道了你想要的值的控件的ID,使用FindControl方法來創建對它的引用,而不是使用它在單元格集合或者控件集合的特定的索引值。
CheckBox cb;
cb=(CheckBox)e.Item.FindControl(「CheckBox2」);
在VS中。可以使用DataGrid的屬性生成器來創建模板列,並使用模板編輯器來具體設定它的外觀,在屬性窗口頁的列選擇中,選中該列並單擊底部的「將該列轉化為模板列」,關閉屬性窗口,右擊該DataGrid並選擇「編輯模板」,然後,你就可以從工具箱拖拽控件到模板中,也可以增加靜態文本。
(unfinished)
|