asp.net中皮肤与样式

怎样写一个主题的皮肤呢?:

就是类似于你在设计视图下把一个控件的样式设置好之后再把这个控件的源码考到皮肤文件中,把不属于皮肤的内容去了,如id就可以了

这个去了id之后,而不加SkinId这就是一个默认皮肤,也就是在引用页面中如果不设置SkinID同一类型的控件都使用这个皮肤,如果设置SkinId

那么就是不默认皮肤了,所以在引用的时候,一定要通过SkinID引用一下才可以,(注意在一个皮肤文件中只允许有一个默认皮肤不然就会出

现错误)

在配置文件里添加Theme或者StyleSheetTheme属性

<configuration>
  <
system.web>
    <!—<pages theme=”Theme_XP”/>-->
    <
pages styleSheetTheme="Theme_XP"/>  所有的控件都使用这个样式
    </
system.web>
</
configuration>

 

在页面的PreInit事件中可以动态加载主题,此时皮肤文件和样式表文件会同时被加载,但在该事件中不能够调用页面的控件,因为在此事件中,页面控件还未初始化。
<%@ Page Language="C#" Theme="DynamicTheme" %>

……
<a href="DynamicTheme.aspx?theme=XP">Theme_XP </a>
<a href="DynamicTheme.aspx?theme=Win7">Theme_Win7 </a>

……
protected void
Page_PreInit(object sender, EventArgs e)
{
    Theme = "Theme_XP";
    if (Request["theme"] != null)
    {
        switch (Request["theme"])
        {
            case "XP":
                Theme = "Theme_XP";
                break;
            case "Win7":
                Theme = "Theme_Win7";
                break;
        }
    }
}

3、通过改变控件的SkinID属性值动态加载主题中的皮肤

除了在页面的PreInit事件中动态加载主题外,还可以在PreInit事件中选择加载主题中的皮肤,但皮肤只能是命名皮肤。
<%@ Page Language="C#" Theme="DynamicCSS" %>
……
<a href="showdynamicskin.aspx?skin=professional">Professional</a>
<
a href="showdynamicskin.aspx?skin=colorful">Colorful</a>
……
protected void Page_PreInit(object sender, EventArgs e)
{
    if (Request["skin"] != null)
     { 
       switch (Request["skin"])
        {
            case "professional":
                grdMovies.SkinID = "Professional";
                break;
            case "colorful":
                grdMovies.SkinID = "Colorful";
                break;
        }
    }
}

4、通过改变控件的CssClass属性值动态加载主题中的样式表

除了动态加载主题外,还可以选择加载主题中的样式表。
样式表文件:App_Themes\DynamicCSS\GridView.CSS
.Professional td
{
    padding:4px;
    color:#333333;
    background-color:#F7F6F3;
}
.Professional .Header th
{
    padding:4px;
    background-color:#5D7B9D;
    font-weight:bold;
    color:White;
}
.Professional .Alternating td
{
    background-color:White;
    color:#284775;
}
.Colorful td
{
    padding:4px;
    color:#333333;
    background-color:#FFFBD6;
}
.Colorful .Header th
{
    padding:4px;
    background-color:#990000;
    font-weight:bold;
    color:White;
}
.Colorful .Alternating td
{
    background-color:White;
}

<%@ Page Language="C#" Theme="DynamicCSS" %>
……
<asp:GridView id="grdMovies" Runat="server"  DataSourceID="srcMovies" GridLines="none"
HeaderStyle-CssClass="Header"
AlternatingRowStyle-CssClass="Alternating"/>

<asp:DropDownList
id="ddlCssClass"
Runat="server">
<
asp:ListItem Text="Professional" />
<
asp:ListItem Text="Colorful" />
</
asp:DropDownList>
……
protected void btnSubmit_Click(object sender, EventArgs e)
{
    grdMovies.CssClass = ddlCssClass.SelectedItem.Text;
}

 

二、禁用主题(皮肤、样式表)

当加载主题到页面后,因为某些原因需要禁用某个页面的主题,或者说禁用某个控件的主题,此时我们可以采用设置Theme或者StyleSheetTheme为空来完成。而设置EnableTheming为False禁用的只是主题中的皮肤。

禁用主题:设置Theme或者StyleSheetTheme为空来完成,或者创建一个空的主题文件,然后关联它。

禁用主题中的皮肤:当以Theme方式加载主题时,我们可以设置控件或者页面的EnableThemeing为False禁用主题中的皮肤。
 

三、Theme和StyleSheetTheme的异同

两者都可用来加载指定的主题,当主题中不包含皮肤文件时,两者效果一样,当主题中包含皮肤文件时,两者因优先级不一样会产生不一样的效果,优先级依次为:StyleSheetTheme->Page->Theme,后面的会重写前面的相同部分。

皮肤文件:App_Themes\Theme1\TextBox.skin
<%--TextBox默认皮肤--%>
<asp:TextBox runat="server" BackColor="Red"/>  
<%--TextBox命名皮肤1--%>
<asp:TextBox runat="server" BackColor="Yellow" SkinId="txtName"/>
<%--TextBox命名皮肤2--%>
<asp:TextBox runat="server" BackColor="Blue" SkinId="txtAge"/>

1、页面以Theme方式加载主题
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default1.aspx.cs" Inherits="Default1"  Theme="Theme1"%>
……
<form>
   
<div>
    <asp:TextBox ID="TextBox1" runat="server" BackColor="Black"></asp:TextBox>
    <
asp:TextBox ID="TextBox2 " runat="server" SkinID="txtName" BackColor="Black"></asp:TextBox>
    <
asp:TextBox ID="TextBox3" runat="server" SkinID="txtAge"></asp:TextBox>
    </
div>
</
form>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分页是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
说明: 这是本人效仿126邮箱界面在美工的配合下做的一公用界面、基本上适合很多信息管理系统的界面要求。本人的CSS和JAVASCIRPT的功底有限,开发的东西难免会有些BUG或者很肤浅的地方,希望和朋友们一起探讨解决其的一些问题。也非常希望高手们优化我JS。 功能介绍: 1、可以换皮肤、其住框架、具体页面可以统一使用皮肤。 2、tab页标题有右键菜单,新开、全屏打开,刷新。双击标题也可以刷新。 3、可以收放菜单栏。 使用方法: 基本上主框架页面不需要作任何的变动了,直接就可以用,就不讲了。 在这里主要讲一下使用tabControl: tabControl新开一个页面实际上是通过JS在主显示区域建立一个iframe 把这个iframe的src 指向我们指定的页面。 本源码由16Aspx调测并整理 商业版资源请在作者或者16Aspx授权范围内使用,否则后果自负! 如需转载免费版请注明作者信息及来源,以示对他人劳动成果的尊重! 获得更有效最新的帮助技术支持看这里:http://www.16aspx.com/ ╭═══════════════╮ ║ .Net源码 控件专业站 ║ ╭══════┤ http://www.16aspx.com ├═════╮ ║ ║论坛:http://www.16aspx.com/forumindex.aspx ║ ║ ╰═══════════════ ╯ ║  ║ ║ ║ ║  ║16Aspx声明: ║ ║ 1) 本站不保证所提供软件或程序的完整性和安全性。 ║ ║ 2) 转载本站提供的资源请勿删除本说明文件。 ║ ║ 3) 本站源码为网上搜集或网友提供,如果涉及或侵害到您的版║ ║ 请立即写信通知我们。 ║ ║ 4) 本站提供代码只可供研究使用,请在下载24小时内删除, ║ ║ 切勿用于商业用途,由此引起一切后果与本站无关。 ║ ║ 5) 源码后续升级或修补,我们会在该源码评论发布! ║  ║ ║ ║ ║  ║项目承接:Asp.Net网站,Asp.Net管理系统开发,Winform系统开发 ║ ║ Silverlight、WPF开发,各类管理系统工具开发 ║ ║ ║ ║网站广告投放:QQ: 330199865,Email: amomzk@hotmail.com ║ ║ ║ ║ 本站专注于C# .NET技术讨论 ║ ║ 联系方式 : amomzk@hotmail.com ║ ║ ╭───────────────────────╮ ║ ╰══┤ .Net源码专业站 http://www.16aspx.com ├══╯ ╰───────────────────────╯ 友情提示: 一般数据库文件默认在DB_16aspx文件夹下 更多使用帮助和协议请浏览http://www.16aspx.com/ 以上相关内容变更请以16Aspx官方网站最终显示为准

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值