在显示和编辑模式下自定义列的外观
默认情况下, DataGrid 用预设大小的列显示数据。当你将行设置为编辑模式时,该控件将所有可编辑数据显示在 TextBox 中,不管是什么类型的数据。
如果你想自定义列的内容,则将列设定为模板列,模板列的工作方式与 Dataist 或者 Repeater 控件中的项模板类似。差别之处仅在于你定义的是列的外观不是行的外观。
定义模板列的时候,可以具体设定下面这些模板类型:
① 使用项模板来自定义数据的一般外观。
② 将行设为编辑模式时使用编辑项模板来具体设定列的显示。它允许你具体设置一个控件而不是编辑模式下默认的 TextBox.
③ Header 模板和 Footer 模板允许你分别自定义控件的 Header 和 Footer.( 只有将 DataGrid 的 ShowFoot 属性设为 True, 才会显示表的尾部。 )
下面的例子是一个显示布尔数据的模板列的 HTML 语法。项模板和编辑模板都使用一个 CheckBox 来显示值。项模板中的 CheckBox 是不可用的,使用者就不能勾选它,而在编辑项模板中 CheckBox 好似允许用户选择的。
1<columns>
2<asp:templatecolumn headertext="”Discontinued”">
3<itemtemplate>
4<asp:checkbox #databinder.eval(container,”dataltem.discontinued”)="" 2”="" ```’="" checked="’```" id="”checkbox" name="”Checkbox" runat="”server”enabled=false">
5</asp:checkbox>
6</itemtemplate>
7<editltemtemplate>
8<asp:checkbox #databinder.eval(container,”dataitem.discontinued”)="" 2”="" ```’="" checked="’```" id="”Checkbox" runat="”server”name=”Checkbox">
9</asp:checkbox>
10</editltemtemplate>
11</asp:templatecolumn>
12</columns>
注意:如果在编辑模板中使用一个 CheckBox ,要意识到在运行时,表项单元格实际上还包含了除了 CheckBox 自身以外的几个 LiteralControl 控件,任何时候你知道了你想要的值的控件的 ID ,使用 FindControl 方法来创建对它的引用,而不是使用它在单元格集合或者控件集合的特定的索引值。
CheckBox cb;
cb=(CheckBox)e.Item.FindControl(“CheckBox 2” );
在 VS 中。可以使用 DataGrid 的属性生成器来创建模板列,并使用模板编辑器来具体设定它的外观,在属性窗口页的列选择中,选中该列并单击底部的“将该列转化为模板列”,关闭属性窗口,右击该 DataGrid 并选择“编辑模板”,然后,你就可以从工具箱拖拽控件到模板中,也可以增加静态文本。
(unfinished)