• 用return this对System.Web.UI.WebControls.Table的另类简单封装



    思路来源  用return this;来写FluentInterface ,结合我之前写过一些方法进行整理写出来的,主要的功能是进行排序字段的样式处理,如果用js+dom操作更容易实现。 

    用此方法在后台拼table的时候,可以大量减少tr,td,th标签的使用,相对来说,代码量简洁了很多,比用系统的table要简单的多。

    代码风格类似jquery,所有代码是基于服务器生成。

    建立一个表格对象

    var  t = new HtmlControls.Table()
    

    添加一行

    t.NewRow();//新建一行
    t.NewRow().AddTH("序号").AddTH("第一行");//在此行中添加对应的表头单元格
    t.NewRow().AddTD("序号").AddTD("第一行");//在此行中添加对应的行单元格
    t.NewRow().AddTH("序号").AddTH("第一行").EndRow();//结束本行
    

    其他函数

    Class(string classname)//设置css样式,相当于jq中的addClass函数
    Css(string properties)//设置style属性,相当于jq中的css函数
    ColumnSpan(int value)//设置单元格的colspan属性,仅对单元格有效
    RowSpan(int value)// 设置单元格的rowspan属性,仅对单元格有效
    CellPadding(int value)//设置表格的cellspacing属性
    CellSpacing(int value) //设置表格的cellpadding属性
    

    扩展用法,针对表格排序后各个单元格的变化情况

    构造函数

    public Table(string field, FieldSort sort) //设置当前的排序字段,与排序方法(Asc,Desc)
    

    所有单元格可以使用如下方法

    Compare(string compare)  //要对比排序字段
    Compare(string compare, FieldSort defaultsort)  //默认的排序方法
    

    如:

    t.NewRow().AddTH("序号").AddTH("第一行").Compare("lineA", Table.FieldSort.Asc)
    t.NewRow().AddTD("序号").AddTD("A").Compare("lineA")
    

    同时要指定排序响应的事件OrderingEvent,javascript或url

    如:javascript:pOrdering('{0}',{1}) //0代表排序字段,1代表排序方向

    部分使用代码及效果

    简单添加表格

    使用代码如下:

    t = new WebDemo.HtmlControls.Table();
    t.NewRow().AddTH("序号")//添加表头
              .AddTH("第一行")
              .AddTH("第二行")
              .AddTH("第三行")
              .AddTH("第四行")
              .AddTH("第五行")
              .EndRow();
    for (int i = 1; i <= 5; i++)
    {
        t.NewRow().AddTD(i.ToString())//添加行单元格
                  .AddTD("A")
                  .AddTD("B")
                  .AddTD("C")
                  .AddTD("D")
                  .AddTD("E")
                  .EndRow();
    }
    

    稍复杂的表格

    使用代码如下:

    t = new WebDemo.HtmlControls.Table().CellPadding(1).CellSpacing(1).Class("t_data");
    t.NewRow()
              .AddTH("序号").RowSpan(2)//设置rowspan属性
              .AddTH("行号").ColumnSpan(5)//设置colspan属性
              .EndRow();
    t.NewRow().Class("sub")
              .AddTH("第一行")
              .AddTH("第二行")
              .AddTH("第三行")
              .AddTH("第四行")
              .AddTH("第五行").Css("color:#f00")//对最后一个表头添加CSS样式
              .EndRow();
    for (int i = 1; i <= 5; i++)
    {
        t.NewRow().Class(i % 2 == 0 ? "odd" : "eve")//添加隔行变色
                  .AddTD(i.ToString())//添加行单元格
                  .AddTD("A")
                  .AddTD("B")
                  .AddTD("C")
                  .AddTD("D")
                  .AddTD("E").Css("color:#f00")
                  .EndRow();
    }
    

    排序表格生成, 所有表头都可以进行相应的排序(正序,反序)

    使用代码如下:

    table = new Table(filed, sort).CellPadding(1).CellSpacing(1);
    table.OrderingEvent = "javascript:pOrdering('{0}',{1})";
    table.DefaultSort = Table.FieldSort.Desc;
    table.NewRow()
         .AddTH("序号")
         .AddTH("股票代码").Compare("code", Table.FieldSort.Asc)
         .AddTH("股票名称")
         .AddTH("最新价").Compare("price")
         .AddTH("最新涨幅").Compare("ratio")
         .AddTH("昨收价").Compare("prev")
         .AddTH("最高价").Compare("high")
         .AddTH("最低价").Compare("low")
         .AddTH("成交量").Compare("volume")
         .AddTH("成交额").Compare("money")
         .EndRow();
    foreach (var info in data)
    {
        table.NewRow().Class((index++) % 2 == 0 ? "e" : "o")
            .AddTD(index.ToString())
            .AddTD(info.StockCode).Compare("code")
            .AddTD(info.StockName)
            .AddTD(info.LastestPrice.ToString("F2").Color(info.RaiseDownRatio,0f)).Compare("price")
            .AddTD(info.RaiseDownRatio.ToString("P2").Color(info.RaiseDownRatio, 0f)).Compare("ratio")
            .AddTD(info.PrevClosePrice.ToString("F2")).Compare("prev")
            .AddTD(info.HighPrice.ToString("F2")).Compare("high")
            .AddTD(info.LowPrice.ToString("F2")).Compare("low")
            .AddTD(info.Volume.ToString("N0")).Compare("volume").Class("right")
            .AddTD(info.Money.ToString("N2")).Compare("money").Class("right")
            .EndRow();
    }
    

    原代码和DEMO

    -------------------------------------------------------------------------------------

    凡客之程序员娱乐一下(转)

    --------------------------------------------------------------------------------------

  • 相关阅读:
    Win7 SP1 安装SQL Server 2012时提示“此计算机上的操作系统不符合 SQL Server 2012的最低要求”
    ajax jsonp跨域
    Caused by: Unable to locate parent package [json-package] for [class com.you.action.ColumnAction]
    PHP MVC自己主动RBAC自己主动生成的访问路由
    Service与Activity与交流AIDL
    SVN常见错误两项纪录
    EL表达式语言
    oracle11g ASM(修复损坏的磁盘组头asm修复2)
    如何使用iOS 8 指纹识别,代码、示例
    EXCEL Pivot table manipulate
  • 原文地址:https://www.cnblogs.com/liydotnet/p/1798400.html
Copyright © 2020-2023  润新知