Asp.net主题(theme)和皮肤(skin)的使用

 1 asp.net的服务器端控件提供了多种样式的设计,如果对每个控件都单独设置,是比较繁琐的事情,所以微软也提供了针对这些服务器端控件的样式管理,其实也可以通过css来控制部分服务器端控件的样式,比如textbox,如果用普css就是对input进行样式控制,但对于gridview或者日历控件等,css文件无法灵活的控制,这就需要微软专门为服务器端控件提供的主题和皮肤。
 2 
 3 主题和皮肤的使用方法:
 4 
 5 1、新建外观文件(*.skin),然后在文件里设定服务器端控件的样式
 6 
 7 2、在aspx页面的Page里加入外观文件的应用,StylesheetTheme或者Theme(两者有不同)
 8 
 9 StylesheetTheme和Theme的区别:
10 
11 针对默认的样式(没有定义SkinID的样式),在相应的aspx页面中Theme将采用定义的样式,在页面里再设计同属性的样式无效;StylesheetTheme则允许在页面里再定义同属性的样式并有效。(注意:是同属性的样式,比如同是定义Height)
12 
13 举例:
14 假设我们建立了一个外观文件newSkin,定义了一个默认textbox的样式和一个指定SkinID的textbox的样式(背景颜色、边框的颜色、宽度和线条类型)
15 <asp:TextBox runat="server" BorderColor="#6699FF" BackColor="#CCFFCC" BorderWidth="1px" BorderStyle="Solid"></asp:TextBox>
16 
17 <asp:TextBox runat="server" SkinID="new" BackColor="#FFCC99" BorderColor="#FF6600" BorderStyle="Dotted" BorderWidth="2px"></asp:TextBox>
18 
19 示例1:
20 
21 在aspx页面中使用Theme来引入外观文件,并且在页面里有四个TextBox的控件:
22 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Skin_Default" Theme="newSkin" %>
23 控件1:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
24 控件2:<asp:TextBox ID="TextBox1" runat="server" BackColor="#009933" BorderColor="#FF6600" BorderStyle="Dotted" BorderWidth="2px"></asp:TextBox>
25 控件3:<asp:TextBox ID="TextBox2" runat="server" Height="40px"></asp:TextBox>
26 控件4:<asp:TextBox ID="TextBox2" SkinID="new" runat="server" BorderWidth="1px" BorderStyle="Solid"></asp:TextBox>
27 
28 结果:
29 控件1和控件2的样式是一样的,控件2在页面里设置的样式无效;
30 控件3除了自定义的高度之外,和控件1、2的样式一样。(在外观文件里没有定义的属性样式,可以在页面里定义)
31 控件4的样式是外观文件里SkinID为new的样式,页面里定义的样式无效。
32 
33 示例2:
34 
35 在aspx页面中使用Theme来引入外观文件,并且在页面里有四个TextBox的控件:
36 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Skin_Default" StylesheetTheme="newSkin" %>
37 控件1:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
38 控件2:<asp:TextBox ID="TextBox1" runat="server" BackColor="#009933" BorderColor="#FF6600" BorderStyle="Dotted" BorderWidth="2px"></asp:TextBox>
39 控件3:<asp:TextBox ID="TextBox2" runat="server" Height="40px"></asp:TextBox>
40 控件4:<asp:TextBox ID="TextBox2" SkinID="new" runat="server" BorderWidth="1px" BorderStyle="Solid"></asp:TextBox>
41 
42 结果:
43 控件1是使用外观文件里的默认样式;
44 控件2是页面里自定义的样式;
45 控件3除了自定义的高度之外,和控件1的样式一样;
46 控件4的样式使用了外观文件里SkinID为new的样式中BackColor="#FFCC99" BorderColor="#FF6600"这两个属性,BorderWidth和BorderStyle则是页面里定义的样式。
47 
48 如果StylesheetTheme或Theme和我们原来设计页面的css文件(或者页面定义style)同时使用会是什么情况?
49 
50 结果:无论是使用StylesheetTheme或Theme,只要是在外观文件里定义的属性值,均是有效的,没有定义的属性值采用css文件里的样式。
51 
52 如果同时使用StylesheetTheme或Theme、页面自定义样式和css文件,那又会怎么样?
53 
54 结果:优先级(优先级的意思是先采用优先级高定义的样式,如果优先级高的没有定义,则采用下一优先级的样式)
55 1、Theme:外观文件->页面控件自定义样式->css文件
56 
57 2、StylesheetTheme:页面控件自定义样式->外观文件->css文件
58 
59 总之,css文件的优先级是最低的

分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,而且有时候我们需要对DataList和Repeater甚至自定义数据绑定控件进行分页,手工编写分页代码不但技术难度大、任务繁琐而且代码重用率极低,因此分页已成为许多ASP.NET程序员最头疼的问题之一。 AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现分页导航功能的地方,如为GridView、DataList以及Repeater等数据绑定控件实现分页、呈现自定义的分页数据以及制作图片浏览程序等,因为AspNetPager控件和数据是独立的,因此要分页的数据可以来自任何数据源,如SQL Server、Oracle、Access、mysql、DB2等数据库以及XML文件、内存数据或缓存中的数据、文件系统等等。 AspNetPager 7.2 版发布 新增属性 PagingButtonLayoutType,可设置分页导航元素(数字页索引、上页、下页、首页和尾页)的布局方式,该属性值是一个PagingButtonLayoutType枚举,通过设置该属性为PagingButtonLayoutType.UnorderedList或PagingButtonLayoutType.Span,允许将这些分页导航元素包含在 与或与标签之间,以便于为这些分页元素应用CSS样式。 新增 PagingButtonClass 与 PagingButtonStyle 属性,可以单独为分页导航按钮(数字页索引、上页、下页、首页和尾页)设置CSS样式; 新增 FirstLastButtonClass 与 FirstLastButtonStyle 属性,可以单独为首页和尾页分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则首页和尾页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增 NextPrevButtonClass 与 NextPrevButtonStyle 属性,可以单独为上页和下页分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则上页和下页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增 MoreButtonClass 与 MoreButtonStyle 属性,可以单独为更多页(...)分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则上页和下页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增属性 ShowMoreButtons ,可以指定是否显示更多页按钮; 新增属性 CurrentPageButtonPosition ,可设置在每次分页后,当前页数字索引在所有的数字页索引中的显示位置,该属性值是一个PagingButtonPosition枚举,对应的值及说明如下: Beginning:当前页数字索引总是显示在所有数字页索引的最前面; End:当前页数字索引总是显示在所有数字页索引的最后面; Center:当前页数字索引总是显示在所有数字页索引的中间; Fixed:默认值,固定不变; 控件的CssClass属性仅应用于控件的窗口元素(div),将不再应用于下属分页元素; 废止属性CenterCurrentPageButton,可以用CurrentPageButtonPosition属性取代; 修改CurrentPageIndexn属性,允许在程序中任何地方以编程方式设置CurrentPageIndex的值来动态指定当前页,直接设置该属性的值时将同时引发PageChanging和PageChanged 事件,实现和点击分页按钮一样的分页功能; 修正了7.1版中设置SubmitButtonImageUrl属性后,Postback回发分页方式情况下点击数字页索引按钮不引发分页事件的bug; 修正了使用Url分页时,如果页面上没有服务器端form控件时无法注册客户端脚本的bu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值