zoukankan      html  css  js  c++  java
  • .net 主题与样式

    .net 主题与样式

    理论上上来说,不同的主题中的样式表和SKIN文件的结构都应该是完全相同的。
    3)  设置你要应用主题的控件的css样式名为css中定义的样式名(比如column、gradient)
    设置你要应用主题的服务器控件的SkinId为Skin文件中定义的skinid(比如login、create等),这样在Skin中定义的控件属性会自动附加到当前的控件上(内部也是使用CSS实现的)
    4)  应用主题,有三种办法      
           全局主题:在Web.config中<system.web>中添加<pages StyleSheetTheme ="ThemeName"/>节,这样在整个应用中都会自动应用名为ThemeName 的主题
           页面主题:在ASPX文件顶部加入:<%@ Page Language="C#" StylesheetTheme=" ThemeName " %>,这样当前页面都会应用名为ThemeName 的主题,或者在ASPX_CS中加(Page_Load方法)入如下代码 Page. StyleSheetTheme = “ThemeName”; 
           角色主题:需要使用masterpage 来辅助实现 ,通过User.IsInRole(“RoleName”) 来判断用户是否属于某个角色,然后决定使用何种主题(Page. StyleSheetTheme = “ThemeName”);当然,使用这种办法还可以应用用户选择的主题
           如果你仍然感觉迷惑,请查看 Quick Start 。
    (二)  工作原理
        不同的主题和皮肤之间的不同主要是页面和页面中的控件的样式(包括字体、段落、背景、边框等等)、部分图片的不同。
        传统的完全使用CSS来表现不同的主题的方案,在处理图片和图片按钮的地方往往心有余而力不足。而在aspnet2.0里面一切都已经变得简单。
        主题和皮肤是 dotnet framework2.0内建支持的,服务器控件添加了SkinId属性,Page类也添加了Theme 和 StyleSheetTheme 属性,其目的就是优雅的支持Skin。在应用指定了主题之后,相关的页面会自动链接位于主题目录下的css文件和skin文件,css的用法跟传统的用法没有什么区别,而skin文件则以一种类似于css的方式工作,指定了SkinId的服务器控件会自动从skin文件中加载并附加匹配的属性或样式(最常用的是Image 和ImageButton的ImageUrl属性,这样做可以使页面在不同的主题下)---这是在服务器端完成的。由于skin文件在使用后是缓存在内存中的,所以效率不会有问题。
     
    (三)  Theme 和 StylesheetTheme 的区别
        基本上,本文前面所有的 StyleSheetTheme 都可以替换为 Theme ,我猜想区别是使用 Theme 时位于主题文件夹中的 样式表(CSS)文件不会被应用到主题中,但是根据我的测试,发现两种情况下生成的页面中,只有<link href=’’>这一节的位置不同,一个出现在<Title>标记前面,一个则是后面。
    (四)  优雅之处
    a)         完全Framework内建的支持、不再需要复杂的编程,甚至不再需要编程;
    b)        在vs2005中有非常友好的设计时支持,也就是说,在设计的时候你就可以看到某种主题的效果;
    c)        学习曲线很平缓,如果你熟悉CSS的话,则更加没有难度。
    -----------------
    a、页面里相同的控件使用不同的样式:在该控件后面加skinID
      b、把定义好的theme应用到整个页面:在该页的Page页签里加上属性theme=“theme名称”
      c、把定义好的theme应用到整个站点:在web.config文件system.web的配置节中加上<pages theme="theme名称">
      d、动态的更换站点的样式(主题、皮肤):在Page_PreInit事件中写代码,Page.Theme = "...";
      e、控件中应用样式的优先级:a、StyleSheetTheme引用的风格[优先级最低]
     
                               b、代码设定的控件属性(覆盖StyleSheetTheme)
     
                               c、Theme引用的风格(覆盖前面2个) [优先级最高]
      f、让某个控件不应用theme里面定义的风格:更改属性EnableTheming=false即可
     
    141 /**//// <summary>
      142 /// 获取当前的表达式对所选列进行排序
      143 /// </summary>
      144 protected void SearchSortExpression(string[] sortColumns, string sortColumn, out string sortOrder, out int sortOrderNo)
      145 {
      146 sortOrder = "";
      147 sortOrderNo = -1;
      148 for (int i = 0; i < sortColumns.Length; i++)
      149 {
      150 if (sortColumns[i].StartsWith(sortColumn))
      151 {
      152 sortOrderNo = i + 1;
      153 if (AllowMultiColumnSorting)
      154 {
      155 sortOrder = sortColumns[i].Substring(sortColumn.Length).Trim();
      156 }
      157 else
      158 {
      159 sortOrder = ((SortDirection == SortDirection.Ascending) ? "ASC" : "DESC");
      160 }
      161 }
      162 }
    164 /**//// <summary>
      165 /// 绘制升序降序的图片
      166 /// </summary>
      167 protected void DisplaySortOrderImages(string sortExpression, GridViewRow dgItem)
      168 {
      169 string[] sortColumns = sortExpression.Split(",".ToCharArray());
      170
      171 for (int i = 0; i < dgItem.Cells.Count; i++)
      172 {
      173 if (dgItem.Cells[i].Controls.Count > 0 && dgItem.Cells[i].Controls[0] is LinkButton)
      174 {
      175 string sortOrder;
      176 int sortOrderNo;
      177 string column = ((LinkButton)dgItem.Cells[i].Controls[0]).CommandArgument;
      178 SearchSortExpression(sortColumns, column, out sortOrder, out sortOrderNo);
      179 if (sortOrderNo > 0)
      180 {
      181 string sortImgLoc = (sortOrder.Equals("ASC") ? SortAscImageUrl : SortDescImageUrl);
      182
      183 if (sortImgLoc != String.Empty)
      184 {
      185 Image imgSortDirection = new Image();
      186 imgSortDirection.ImageUrl = sortImgLoc;
      187 dgItem.Cells[i].Controls.Add(imgSortDirection);
    189 }
      190 else
      191 {
      192
      193 if (AllowMultiColumnSorting)
      194 {
      195 Literal litSortSeq = new Literal();
      196 litSortSeq.Text = sortOrderNo.ToString();
      197 dgItem.Cells[i].Controls.Add(litSortSeq);
      198
      199 }
      200 }
      201 }
      202 }
      203 }
      204
      205 }
    http://www.yuechengnet.com
  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/yanwei067/p/925782.html
Copyright © 2011-2022 走看看