好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Winform分页控件之纯分页显示处理

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开发框架 、WCF开发框架的研究及应用。
  转载请注明出处:
撰写人:伍华聪   http://www.iqidi.com  
    

 

标签:  Winform开发框架 ,  分页控件

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Winform分页控件之纯分页显示处理的详细内容...

  阅读:41次

上一篇: 个人日记

下一篇:高质量的Javascript