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界面样式几种效果,如下所示。

本文转自博客园伍华聪的博客,原文链接:Winform分页控件之纯分页显示处理,如需转载请自行联系原博主。



目录
相关文章
|
数据库 C# 数据库管理
C#:Winfrom 实现DataGridView 自定义分页
今天给大家分享Winform实现DataGridView 自定义分页的案例,感兴趣的朋友可以一起来学习一下。 采用技术:C\#+Winform+Dapper+SQLite。
C#:Winfrom 实现DataGridView 自定义分页
|
SQL 存储 Go
WinForm DataGridView分页功能
WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件   .CS: 1 using System; 2 using System.
1416 0
|
C# Windows
WPF DataGrid分页功能实现代码
在Silverlight中DataGrid分页可以结合DataPager控件很容易实现,但是在WPF中没有类似的,需要手动实现这样一个控件: 1、创建一个UserControl,DP.
1153 0
|
算法
分页控件和几个相关控件的源代码
分页控件的源代码,可能会让有些人失望,因为代码很乱。乱的一个原因呢,可能是没有采用OO的思路吧,因为写控件的时候还一点都不会OO呢,只是一直在用,也就没有作大的重构。有两个分页控件, 一个是通过PostBack来分页的,一个是通过URL来分页的。
789 0
|
数据库
分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
目的: 1、一个页面(DataList.aspx)可以显示多个模块的列表功能。      一般是有一个列表需求就需要一个aspx文件,如果有100个列表,那么就会有100个aspx文件,这么多的文件(包括.aspx.cs文件)里面的内容基本是一样的,这样写起来麻烦,管理起来也不容易,命名就是一个比较头痛的问题。
1073 0