zoukankan      html  css  js  c++  java
  • Winform分页控件之纯分页显示处理

    在之前介绍的Winform分页控件中,都以分页控件+显示表格控件作为一个整体性的控件,不可分开,这样做的目的是可以实现更多的操作,集成更多丰富的特性,减少我们开发的工作量,这种情况虽然适用于大多数的情况,不过有时候需要更进一步对列表控件进行设置修改或者实现一些特殊的显示效果的时候,这种绑定列表控件的分页控件方式就有点捉襟见肘了。为了解决这个问题,我对分页控件进行稍微的调整,使其支持分页和列表控件分开的情况,具体实现以及效果是如何的呢,下面我们来分析了解下。

    1、单独的分页信息控件

    在我的开发设计过程总,实现一些关键的属性及操作后,它就可以作为一个独立的分页控件进行使用了。

    运行的时候效果如下所示:

    2、分页控件的使用

    在实际使用的时候,我们把分页控件的dll导入到工具栏里面,然后我们在VS的控件集合里面就可以看到它的图标了。拖动到界面上就实现了分页控件的布局显示了。

    由于这个纯分页没有列表控件,这个列表就需要自己放到你的界面上去,由于列表控件如DataGridView(传统控件)或者GridControl(DevExpress控件)是独立的,因此可以自由设计调整,列表的样式以及事件处理都合分页控件没有必然的联系。

    使用代码如下所示:

           private void FrmCustomerPager_Load(object sender, EventArgs e)
            {
                this.pager1.PageChanged += new WHC.Pager.WinControl.PageChangedEventHandler(pager1_PageChanged);
                this.pager1.ExportCurrent += new WHC.Pager.WinControl.ExportCurrentEventHandler(pager1_ExportCurrent);
                this.pager1.ExportAll += new WHC.Pager.WinControl.ExportAllEventHandler(pager1_ExportAll);
    
                BindData();
            }
    
            void pager1_PageChanged(object sender, EventArgs e)
            {
                BindData();
            }
    
            void pager1_ExportCurrent(object sender, EventArgs e)
            {
                MessageUtil.ShowTips("导出当前页");
            }
    
            void pager1_ExportAll(object sender, EventArgs e)
            {
                MessageUtil.ShowTips("导出所有");
            }        
            
            
            /// <summary>
            /// 标准的记录查询函数
            /// </summary>
            /// <param name="where"></param>
            /// <param name="pagerInfo"></param>
            /// <returns></returns>
            private DataTable FindToDataTable(string where, PagerInfo pagerInfo)
            {
                WHC.Pager.WinControl.PagerHelper helper = new WHC.Pager.WinControl.PagerHelper("All_Customer", "*", "LastUpdated", pagerInfo.PageSize, pagerInfo.CurrenetPageIndex, true, where);
                string countSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.Access, true);
                string dataSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.Access, false);
    
                string value = SqlValueList(countSql);
                pagerInfo.RecordCount = Convert.ToInt32(value);//为了显示具体的信息,需要设置总记录数
    
                DataTable dt = SqlTable(dataSql);
                return dt;
            }
    
            /// <summary>
            /// 根据查询条件构造查询语句
            /// </summary>
            /// <returns></returns>
            private string GetSearchSql()
            {
                SearchCondition condition = new SearchCondition();
                condition.AddCondition("Name", this.txtName.Text, SqlOperator.Like)
                    .AddCondition("Type", this.cmbType.Text, SqlOperator.Like)
                    .AddCondition("Area", this.cmbArea.Text, SqlOperator.Like);
                string where = condition.BuildConditionSql().Replace("Where", "");
                return where;
            }
            #endregion
    
            private void BindData()
            {
                string where = GetSearchSql();
                this.pager1.PageSize = 30;
                DataTable dt = FindToDataTable(where, this.pager1.PagerInfo);            
                this.gridControl1.DataSource = dt;
            }
    
            private void btnSearch_Click(object sender, EventArgs e)
            {
                BindData();
            }

    从上面的代码,我们可以看到,使用起来还是很方便简洁的,关键代码就是下面这几行:

           private void FrmCustomerPager_Load(object sender, EventArgs e)
            {
                this.pager1.PageChanged += new WHC.Pager.WinControl.PageChangedEventHandler(pager1_PageChanged);
                this.pager1.ExportCurrent += new WHC.Pager.WinControl.ExportCurrentEventHandler(pager1_ExportCurrent);
                this.pager1.ExportAll += new WHC.Pager.WinControl.ExportAllEventHandler(pager1_ExportAll);
    
                BindData();
            }
    
            private void BindData()
            {
                string where = GetSearchSql();
                this.pager1.PageSize = 30;
                DataTable dt = FindToDataTable(where, this.pager1.PagerInfo);            
                this.gridControl1.DataSource = dt;
            }

    这样独立的纯粹的分页,给了列表展示控件最大的弹性,可以在一些复合列、复杂列表中提供很好的整合效果,弥补一些特殊分页碰到的问题。

    除了DevExpress样式,还提供了传统界面样式、DotNetBar界面样式几种效果,如下所示。

    主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发
    专注于Winform开发框架/混合式开发框架Web开发框架Bootstrap开发框架微信门户开发框架的研究及应用
      转载请注明出处:
    撰写人:伍华聪  http://www.iqidi.com 
        
  • 相关阅读:
    Redis操作命令大全
    Redis实用监控工具一览
    Redis缓存雪崩、缓存穿透、缓存击穿、缓存降级、缓存预热、缓存更新
    Redis GEO地理位置信息,查看附近的人
    详解redis持久化
    详解Supervisor进程守护监控
    详解Redis Cluster集群
    arduino使用rfid
    树莓派控制WS2812
    Arduino读取温湿度dh11+烟雾气体MQ2+彩灯ws2812
  • 原文地址:https://www.cnblogs.com/wuhuacong/p/2678603.html
Copyright © 2011-2022 走看看