大多数 Web 服务器控件具有默认的布局和外观,但是您可以通过设置属性或使用样式来操纵它们。部分 Web 服务器控件还允许您使用模板来自定义其外观。
模板是一组 HTML 元素和控件,它们构成组件特定部分的布局。例如,在 DataList Web 服务器控件中您可以使用 HTML 元素和控件的组合来创建列表中每行的布局。同样,DataGrid Web 服务器控件对网格中的每行都具有一个默认的外观。但是,您可以通过为单个行、间隔行、所选行等行定义不同的模板来自定义网格的外观。
注意 模板不同于样式。模板定义控件某一部分的“内容”,例如 DataList 控件中行的内容。另一方面,样式指定元素的“外观”,例如颜色、字体等等。样式可以作为整体应用于控件(例如,设置 DataGrid 控件的字体)和模板项。
模板包含 HTML,甚至是嵌入的服务器控件。当控件在 Web 窗体页中运行时,控件框架呈现模板的内容,而不是控件的默认 HTML。
哪些控件支持模板?
并非所有 Web 服务器控件都支持模板。在大多数情况下,复杂的控件支持模板。这将包括 DataGrid、DataList 和 Repeater Web 服务器控件。(实际上,Repeater 和 DataList 控件不仅支持模板,还需要您创建模板来定义其输出。)您从其他来源获取的控件也可以支持模板。
每一控件支持的一组模板略有不同,这些模板指定控件的不同部分的布局,例如标题、脚注、项和所选项。您可以为上述任一或全部对象指定模板,具体情况取决于您要自定义哪一对象。在 DataGrid 控件中,您可以指定列(而非行)。
下表概述了支持模板的 Web 服务器控件:
控件 | 模板 |
---|---|
Repeater |
|
DataList |
|
DataGrid |
|
创建模板
<asp:datalist ID="DataList1" runat="server">
<HeaderTemplate>
Employee List
</HeaderTemplate>
<ItemTemplate>
<asp:label id=Label1 runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.EmployeeName")
%>'></asp:label>
<asp:label id=Label2 runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.PhoneNumber")
%>'></asp:label>
<asp:Hyperlink id=Hyperlink1 runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.Email") %>'
NavigateURL='<%# DataBinder.Eval(Container, "DataItem.Link") %>'>
</asp:Hyperlink>
</ItemTemplate>
</asp:datalist>
摘自:.Net SDK1.1