主题是属性设置的集合,使用这些设置可以定义页面和控件的外观,然后在某个 Web 应用程中的所有页、整个 Web 应用程序或服务器上的所有 Web 应用程中一致地应用此外观。
可以使用主题来定义的属性
通常,可以使用主题来定义与某个页或控件的外观或静态内容有关的属性。只能设置那些其 ThemeableAttribute 属性 (Attribute) 设置为 true(在控件类中)的属性 (Property)。
显式地指定控件行为而不是指定外观的属性不接受主题值。例如,不能使用主题来设置 Button 控件的 CommandName 属性。同样,不能使用主题来设置 GridView 控件的 AllowPaging 属性或 DataSource 属性。
请注意,您不能使用表达式生成器,这些生成器在编译时生成页面中的主题赋值或外观赋值的代码表达式。
自定义了继承GridView类的XGridView类的其中的属性,代码如下:
[Browsable(true)]
[Description("鼠标经过行的颜色")]
[DefaultValue("")]
[Category("扩展")]
[Themeable(true)]
public string MouseOverColor
{
get
{
return ViewState[mouseOverColorStr] == null ? Color.Silver.Name : ViewState[mouseOverColorStr].ToString();
}
set
{
ViewState[mouseOverColorStr] = value;
}
}
上面运用了Themeable(true)声明了能运用主题的属性
定义主题
该skin文件中注册该自定义控件,指定其所在程序集、名称空间、标签前缀等,就像我们在页面中使用自定义控件一样,但对于标签前缀的命名不一定要和页面中完全一样
<%@ Register Assembly="MyControls" Namespace="MyControls" TagPrefix="mc" %>
<mc:XGridView runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" MouseOverColor="#0ac0ff">
<RowStyle CssClass="oddRow" HorizontalAlign="Center" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" HorizontalAlign="Center" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle CssClass="evenRow" />
<EmptyDataTemplate> <div style="color:red; font-size:14px; border:solid 1px blue; padding:30px; ">没有符合条件的数据,请添加数据或修改查询条件。</div> </EmptyDataTemplate>
</mc:XGridView>
应用自定义控件
<%@ Register Assembly="MyControls" Namespace="MyControls" TagPrefix="mc" %>
<mc:XGridView ID="XGridView1" runat="server" AutoGenerateColumns="false" > <Columns> <asp:BoundField HeaderText="角色编号" DataField="ID" /> <asp:BoundField HeaderText="角色名称" DataField="UserRoleName" ItemStyle-HorizontalAlign="Left" /> <asp:BoundField HeaderText="角色描述" DataField="UserRoleDescript" ItemStyle-HorizontalAlign="Left" /> </Columns> </mc:XGridView>
运行效果