ASP.NET中的Theme功能

来源:互联网 发布:软件项目部署实施方案 编辑:程序博客网 时间:2024/05/16 05:00

目录

1 概述... 1

2 创建简单的Theme. 1

3 Theme的主要应用范围和限制... 2

4 默认Skin和命名Skin. 2

5 Theme的作用域... 2

6 Themes vs StyleSheetThemes. 3

7 ThemeCSS. 3

8 动态加载Theme. 3

9 在不同的作用域同时设置了Theme时的优先级... 3

10示例-创建简单的Theme. 4

 


正文

1 概述

为一组网站控件设定统一的外观

如所有TextBox控件的背景

不是CSS

CSS调整HTML标记的外观

Theme调整控件的外观

     也不是Master Page

Master Page定义所有页面的排版

Master Page可以同Theme同时使用

2 创建简单的Theme

     创建App_theme目录

     App_theme创建子目录

OrangeTheme

BlueTheme

     为不同的Theme目录添加Skin文件

可以添加一个或多个

ASP.NET2.0将自动分析所有的文件

示例-创建简单的Theme

3 Theme的主要应用范围和限制

为网站控件设定统一的外观

可以指定如下属性(与外观相关的)

   ForeColor

   BackColor

   Text

不能指定如下属性(与外观无关的)

   AutoPostback

4 默认Skin和命名Skin

默认Skin

   为某一种控件指定缺省外观

命名Skin

   为控件指定多个外观  

<asp:TextBox <%--默认skin--%>

    BackColor="Blue"

    ForeColor="White"

    runat="server"/>

   

<asp:TextBox <%--命名skin--%>

    SkinID="BlueOrange"

    BackColor="Orange"

    ForeColor="DarkGreen"

    runat="server"/>

   

<asp:Button <%--默认skin--%>

    BackColor="Blue"

    ForeColor="White"

    Font-Bold="true"

    runat="server" />

5 Theme的作用域

控件

   SkinID

   默认Skin

页面

  <%@ Page Theme="OrangeTheme" %>

网站

<configuration>

  <system.web>

    <pages theme="OrangeTheme"/>

  </system.web>

</configuration>

6 Themes vs StyleSheetThemes

Themes

   为某一种控件指定外观

   不可被重载

StyleSheetThemes

   为某一种控件指定外观

   可以被重载

7 ThemeCSS

Theme

   指定服务器端控件的外观

   ASP.NET2.0的特性

     CSS

指定HTML控件的外观

   W3C标准

可以共同使用

8 动态加载Theme

根据条件采用不同的Theme

Page_PreInit事件中处理

void Page_PreInit(object sender, EventArgs e)

{

    Page.Theme = "OrangeTheme";

}

9 在不同的作用域同时设置了Theme时的优先级

4列表示对应的作用域是否设置了Theme

Web.config

Page(theme)

Page(StyleSheetTheme)

Control

优先级

Page(Theme)

Control

Page(theme)

Web.config

Web.config

 

10示例-创建简单的Theme

OrangeTheme(通过多个skin文件进行设置)

Button.skin

<asp:Button

    BackColor="Orange"

    ForeColor="DarkGreen"

    Font-Bold="true"

    runat="server" />

TextBox.skin

<asp:TextBox

    BackColor="Orange"

    ForeColor="DarkGreen"

    runat="server"/>

GridView.skin

<asp:GridView

        AutoGenerateColumns="false"

        CellPadding="5"

        Font-Names="Arial"

        runat="server">

<AlternatingRowStyle BackColor="Orange" />

<Columns>

<asp:BoundField

    HeaderText="ProcuctName"

    DataField="ProductName" />

<asp:BoundField

    HeaderText="Price"

    DataField="Price" />

</Columns>

</asp:GridView>

 

BlueTheme(通过一个skin文件进行设置)

<asp:TextBox

    BackColor="Blue"

    ForeColor="White"

    runat="server"/>

   

<asp:Button

    BackColor="Blue"

    ForeColor="White"

    Font-Bold="true"

    runat="server" />

   

<asp:GridView

        AutoGenerateColumns="false"

        CellPadding="5"

        Font-Names="Arial"

        runat="server">

<AlternatingRowStyle BackColor="LightBlue" />

<Columns>

<asp:BoundField

    HeaderText="ProcuctName"

    DataField="ProductName" />

<asp:BoundField

    HeaderText="Price"

    DataField="Price" />

</Columns>

</asp:GridView>

 

ASPX文件(可以在aspx文件中指定Theme)

<%@ Page Theme="OrangeTheme" Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <asp:Button ID="Button1" runat="server" Text="Button" />

        <asp:GridView ID="GridView1" runat="server">

        </asp:GridView>

    </div>

    </form>

</body>

</html>

 

CS文件

protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            DataTable source = GetData();

            GridView1.DataSource = source;

            GridView1.DataBind();

        }

    }

 

    private DataTable GetData()

    {

        DataTable dt = new DataTable();

        dt.TableName = "TestGridViewTheme";

        dt.Columns.Add("ProductName", typeof(string));

        dt.Columns.Add("Price", typeof(float));

        DataRow dr1 = dt.NewRow();

        dr1["ProductName"] = "自行车";

        dr1["Price"] = 1000;

        DataRow dr2 = dt.NewRow();

        dr2["ProductName"] = "摩托车";

        dr2["Price"] = 5000;

        DataRow dr3 = dt.NewRow();

        dr3["ProductName"] = "小轿车";

        dr3["Price"] = 200000;

        DataRow dr4 = dt.NewRow();

        dr4["ProductName"] = "赛车";

        dr4["Price"] = 3000000;

        dt.Rows.Add(dr1);

        dt.Rows.Add(dr2);

        dt.Rows.Add(dr3);

        dt.Rows.Add(dr4);

        return dt;

    }

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米手机玩王者荣耀卡怎么办 荣耀8青春版信号差怎么办 华为mate8电池不耐用怎么办 华为4x内存小怎么办 发现手机被用过怎么办 华为p8手机声音小怎么办 手机指纹解锁密码忘了怎么办 华为p10黑色掉漆怎么办 金立手机导航信号弱怎么办 手机导航时gps信号弱怎么办 三星手机导航gps信号弱怎么办 小米5导航信号弱怎么办 华为手机导航gps信号弱怎么办 手机屏玻璃裂了怎么办 oppo音量键坏了怎么办 魅蓝手机屏幕碎了怎么办 手机钢化膜边缘有气泡怎么办 手机贴钢化膜边缘有气泡怎么办 苹果手机钢化膜边缘有气泡怎么办 手机膜里的水泡怎么办 膜贴好了有气泡怎么办 后档玻璃膜气泡怎么办 贴膜里面有灰尘怎么办 贴膜边缘不粘怎么办 贴膜时候的气泡怎么办 贴手机膜起泡了怎么办 手机膜起泡泡了怎么办 手机膜鼓起来了怎么办 贴膜中间有气泡怎么办 新车贴膜有气泡怎么办 贴手机膜进灰尘怎么办 贴手机膜有灰尘怎么办 华为mate10后机壳碎了怎么办 手机屏和壳分开了怎么办 oppoa33手机开不了机怎么办 7p背面刮花了怎么办 oppo手机左右两键失灵怎么办 苹果5s屏幕翘起怎么办 0pp0手机有点卡怎么办 手机用久有点卡怎么办 手机有点卡怎么办魅蓝