zoukankan      html  css  js  c++  java
  • 基础框架之Controls控件说明

    本篇文章针对Controls控件里封装的自定义WEB控件一一说明。

          1.LRepeater:基于Repeater的扩展控件
          前台使用如下:  

    <kilo:LRepeater width="100%" ID="repeaterlist" VirtualPage="true" runat="server"  SORT="WorkStartDate" OrderBy="1"   OnSortEvent="Repeater_Sort" />

           除了Repeater自身的属性外,扩展了以下功能:
           (1) VirtualPage,虚拟分页
           当一次性从数据库读取所有的记录,然后让LRepeater自己分页,那么需要将VirtualPage设置为"false";
           如果数据库里已做分页处理,那么VirtualPage则必须为"true";
           如果需要显示所有的数据,不管有无分页,则直接将VirtualPage设置为"true"。


           (2)SORT,排序字段
           Sort表示默认的排序方式,这个需要配合OnSortEvent一起使用,当多个字段排序时,采用Name_Age_Height 的方式,用下划线将多个字段连接起来。

           (3)OrderBy,排序方向
           OrderBy="1"表示倒序,DESC方向;OrderBy="0"表示顺序,即ASC方向。

           (4)OnSortEvent,排序事件
            后台代码如下:

           protected void Repeater_Sort(object sender, EventArgs e)
            {
                ListBind();
            }
            ListBind():
                PageModel pmodel 
    = new PageModel
                {
                    TableName 
    = "UserList",
                    ReturnFields 
    = "*",
                    Where 
    = strwhere,
                    PageSize 
    = this.AspNetPager1.PageSize,
                    PageIndex 
    = this.AspNetPager1.CurrentPageIndex,
                    Orderfld 
    = this.repeaterlist.SORT,
                    OrderType 
    = this.repeaterlist.OrderBy
                };

             前台,采用LReapeater里面的<asp:linkbutton />控件进行触发OnSort事件,一般情况下,LReapeater需要与AspNetPage配合使用。
           相信大家都明白repeater做数据控件的优点和缺点,本人比较赞同采用repeater,因为可以很好管理显示的格式。

            
          2.AspNetPage:分页控件
          本分页控件的源码直接复制网上的AspNetPage代码,为了使用方便,没有单独使用,而是和其他控件封装到一起。
          前台代码如下:

    <kilo:AspNetPager ID="AspNetPager1" runat="server" OnPageChanged="Pager_PageChanged" />

                 后台代码如下:

       protected void Pager_PageChanged(object sender, EventArgs e)
        {
            ListBind();
        }
        
    private void ListBind()
        {
            PageModel pmodel 
    = new PageModel
            {
                TableName 
    = "inventorylist",
                ReturnFields 
    = "*",
                PageSize 
    = this.AspNetPager1.PageSize,
                PageIndex 
    = this.AspNetPager1.CurrentPageIndex,
                Orderfld 
    = "PartNo",
                OrderType 
    = 0
            };
            pmodel.Where 
    = "Where [Type] = '" + type + "'";

            
    this.repeaterlist.CurrentPageIndex = this.AspNetPager1.CurrentPageIndex - 1;
            
    this.repeaterlist.DataSource = new DataMapper("base").GetPagedDataTable(pmodel).DefaultView;
            
    this.repeaterlist.DataBind();
            
    this.AspNetPager1.RecordCount = pmodel.RecordCount;
        }    

     
         3.HeadMenuControl:页面顶部信息菜单控件
          本控件是采用博客园里一同学的开源控件,在它的技术上进行了封装,扩展了两个功能,
          (1)Tab标签:
          Tab的数据与WebTabControl配合使用,当Tab页切换时,按钮也会更这切换,这样在多个Tab页时,按钮不会相互冲突。
          (2)OnCommand事件:
          HeadMenuButtonItem按钮可以触发Command事件,使此控件成为真正的WebForm控件,只有ButtonUrlType= "Command"时,才会触发Command事件。
          ButtonUrlType目前有四种方式:Command,URL,Javascript,VBScript。
          ButtonPopedom为功能按钮,这个与权限系统进行天衣无缝的配合。只有拥有此权限的身份访问页面时,才会显示操作按钮。

          其他的比较简单,一看就知道了。

          前台代码如下:

    <kilo:HeadMenuWebControls ID="HeadMenuWebControls1" runat="server"
    ButtonList-Capacity
    ="4"    OnCommand="HeadMenuWebControls1_Command" HeadOPTxt="库存报表"  HeadTitleTxt="库存报表" HeadHelpTxt="库存报表">
        
    <kilo:HeadMenuButtonItem ButtonPopedom="Print" Tab="0" ButtonIcon="xls.gif" ButtonUrlType="Command" CommandName="excel"    ButtonName="导出当前库存" ButtonVisible="true" />
      
    <kilo:HeadMenuButtonItem ButtonPopedom="Print" Tab="1" ButtonIcon="xls.gif" ButtonUrlType="Command"  CommandName="detail"    ButtonName="导出当前明细" ButtonVisible="true" />
    </kilo:HeadMenuWebControls>

          后台代码如下:

           protected void HeadMenuWebControls1_Command(object sender, CommandEventArgs e)
            {
                
    switch(e.CommandName)
                {
                    
    case "detail":
                        iPage.DataTable2Excel(
    this.LoadDataTable2(), "当前明");
                        break;
                    
    case "excel":
                        iPage.DataTable2Excel(
    this.LoadDataTable(), "当前库");
                        break;
                }
            }

     
          4.WebTabControl,Tab切换页控件:
          此控件源码同上,在其基础上增加了控件HeadMenuWebControls里的按钮关联显示功能,使操作更加具有人性化。使用也非常简单,不再多说。

  • 相关阅读:
    Synchronized和Lock的实现原理和锁升级
    如何禁止CPU指令重排
    MESI缓存一致性
    归并排序
    强软弱虚四种引用和ThreadLocal内存泄露
    VINS-Mono代码分析与总结(完整版)
    IMU误差模型与校准
    小感
    K8S conul部署
    Centos Consul集群及Acl配置
  • 原文地址:https://www.cnblogs.com/bingyun84/p/1556859.html
Copyright © 2011-2022 走看看