預設情況下,DataGrid用預設大小的列顯示資料。當你将行設定為編輯模式時,該控件将所有可編輯資料顯示在TextBox中,不管是什麼類型的資料。
如果你想自定義列的内容,則将列設定為模闆列,模闆列的工作方式與Dataist或者Repeater控件中的項模闆類似。差别之處僅在于你定義的是列的外觀不是行的外觀。
定義模闆列的時候,可以具體設定下面這些模闆類型:
① 使用項模闆來自定義資料的一般外觀。
② 将行設為編輯模式時使用編輯項模闆來具體設定列的顯示。它允許你具體設定一個控件而不是編輯模式下預設的TextBox.
③ 頭模闆和腳模闆允許你分别自定義控件的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并選擇“編輯模闆”,然後,你就可以從工具箱拖拽控件到模闆中,也可以增加靜态文本。
本文轉自 august 51CTO部落格,原文連結:http://blog.51cto.com/august/6912,如需轉載請自行聯系原作者