自从上篇随笔《Winform分页控件最新版本发布,并提供基于DotNetBar界面的版本》介绍了最新版本的分页控件,并提供下载使用后,很多人对分页控件非常感兴趣(毕竟Winform数据分页是很常见的),并关注该分页控件应该如何使用,其实分页控件在之前很多篇随笔中断断续续都有介绍,为了使大家对分页控件有个系统的认识,本篇详细介绍分页控件的一些属性设置及相关使用注意事项,使大家对该分页控件有一个更深的了解、跟系统的认识,以便在相关的项目开发中熟练使用。
分页控件效果

实现步骤

1、在Visual Studio开发环境的工具箱中,添加一个分页控件(可以其他名称)的项目,然后选择WHC.Pager.WinControl.dll文件,导入分页控件的工具箱图标,如下所示。

其中WinGridViewPager和WinGridView两个控件就是我们常用到的分页控件,两者用法几乎一致,界面效果不同在于WinGridViewPager具有分页工具条,而WinGridView是提供显示所有内容,没有工具条。

2、拖动到指定的窗体中。

3、在代码引用相关的代码实现动态调用。

实现代码
1、在窗体加载实现中添加分页控件的实现代码,以On开始的是相关操作的实现事件,如OnPageChanged表示分页控件页面发生变化的时候,需要实现的事件处理(这个是必须的),另外AppendedMenu是可以在分页控件自带菜单上增加的菜单,如下所示。注意,只要实现相关的事件处理,那么对应的上下文菜单将会出现,默认几个标准的上下文菜单如下所示,包含新建、编辑选定项、删除选定项、打印列表、刷新列表菜单。
注意,为了使分页控件能够显示总数,并记住当前的分页,那么在OnPageChanged实现中需要修改分页控件的

RecordCount和
CurrenetPageIndex

这两个属性。

如果需要添加自己的菜单,则指定AppendedMenu对象即可。

主要实现代码如下:

private void FrmCustomer_Load(object sender, EventArgs e)

{    
    BindData();    
   
    this.winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged);    
    this.winGridViewPager1.OnStartExport += new EventHandler(winGridViewPager1_OnStartExport);    
    this.winGridViewPager1.OnEditSelected += new EventHandler(winGridViewPager1_OnEditSelected);    
    this.winGridViewPager1.OnDeleteSelected += new EventHandler(winGridViewPager1_OnDeleteSelected);    
    this.winGridViewPager1.OnRefresh += new EventHandler(winGridViewPager1_OnRefresh);    
    this.winGridViewPager1.OnAddNew += new EventHandler(winGridViewPager1_OnAddNew);    
    this.winGridViewPager1.AppendedMenu = this.contextMenuStrip1;   
}

2、其他代码的实现如下所示,包含分页事件、刷新事件、删除事件、编辑事件、新增事件、导出Excel事件等。

private void winGridViewPager1_OnPageChanged(object sender, EventArgs e)    
{    
    BindData();    
}    
   
private void winGridViewPager1_OnRefresh(object sender, EventArgs e)    
{    
    BindData();    
}    
   
private void winGridViewPager1_OnDeleteSelected(object sender, EventArgs e)    
{    
    if (MessageUtil.ShowYesNoAndTips("您确定删除选定的记录么?") == DialogResult.No)    
    {    
        return;    
    }    
   
    DataGridView grid = sender as DataGridView;    
    if (grid != null)    
    {    
        foreach (DataGridViewRow row in grid.SelectedRows)    
        {    
            BLLFactory<Customer>.Instance.Delete(row.Cells[0].Value.ToString());    
        }    
        BindData();    
    }    
}    
   
private void winGridViewPager1_OnEditSelected(object sender, EventArgs e)    
{    
    DataGridView grid = sender as DataGridView;    
    if (grid != null)    
    {    
        foreach (DataGridViewRow row in grid.SelectedRows)    
        {    
            FrmEditCustomer dlg = new FrmEditCustomer();    
            dlg.ID = row.Cells[0].Value.ToString();    
            if (DialogResult.OK == dlg.ShowDialog())    
            {    
                BindData();    
            }    
   
            break;    
        }    
    }    
}    
   
private void winGridViewPager1_OnAddNew(object sender, EventArgs e)    
{    
    btnAddNew_Click(null, null);    
}    
   
private void winGridViewPager1_OnStartExport(object sender, EventArgs e)    
{    
    string where = GetSearchSql();    
    this.winGridViewPager1.AllToExport = BLLFactory<Customer>.Instance.FindToTable(where);    
}    
   
private void BindData()    
{   
    #region 添加别名解析    
    this.winGridViewPager1.AddColumnAlias("ID", "编号");    
    this.winGridViewPager1.AddColumnAlias("Number", "客户编号");    
    this.winGridViewPager1.AddColumnAlias("Name", "客户名称");    
    this.winGridViewPager1.AddColumnAlias("Type", "客户类型");    
    this.winGridViewPager1.AddColumnAlias("Area", "客户地区");    
    this.winGridViewPager1.AddColumnAlias("Company", "客户单位");    
    this.winGridViewPager1.AddColumnAlias("Address", "客户地址");    
    this.winGridViewPager1.AddColumnAlias("Telephone1", "电话1");    
    this.winGridViewPager1.AddColumnAlias("Telephone2", "电话2");    
    this.winGridViewPager1.AddColumnAlias("Telephone3", "电话3");    
    this.winGridViewPager1.AddColumnAlias("Telephone4", "电话4");    
    this.winGridViewPager1.AddColumnAlias("Telephone5", "电话5");    
    this.winGridViewPager1.AddColumnAlias("CreateDate", "开户日期");    
    this.winGridViewPager1.AddColumnAlias("Shop_ID", "分店ID");    
    this.winGridViewPager1.AddColumnAlias("Note", "备注");    
    this.winGridViewPager1.AddColumnAlias("LastUpdated", "更新日期");   
    #endregion    
   
   
    string where = GetSearchSql();    
    this.winGridViewPager1.DataSource = BLLFactory<Customer>.Instance.Find(where, this.winGridViewPager1.PagerInfo);    
    this.winGridViewPager1.dataGridView1.Refresh();    
}

3、如果不想把所有的实体类属性或者表字段都显示处理(默认全部显示),那么可以设置属性DisplayColumns即可。
this.winGridViewPager1.DisplayColumns = "ID,ItemNo,ItemName,Manufacture,MapNo,Specification,StockQuantity,AlarmQuantity,WareHouse";

4、设备报表标题如下所示。

this.winGridViewPager1.PrintTitle = Portal.gc.gAppUnit + " -- " + "备件信息报表";

5、绑定自定义Datatable对象的实现。

private void BindData()    
{    
    this.winGridViewPager1.DisplayColumns = "ID,ItemNo,ItemName,Manufacture,MapNo,Specification,Material,ItemBigType,ItemType,
Unit,Price,Source,StoragePos,UsagePos,StockQuantity,AlarmQuantity,Note,Dept,WareHouse";   
    #region 添加别名解析    
   
    this.winGridViewPager1.AddColumnAlias("ID", "编号");    
    this.winGridViewPager1.AddColumnAlias("ItemNo", "项目编号");    
    this.winGridViewPager1.AddColumnAlias("ItemName", "项目名称");    
    this.winGridViewPager1.AddColumnAlias("Manufacture", "供货商");    
    this.winGridViewPager1.AddColumnAlias("MapNo", "图号");    
    this.winGridViewPager1.AddColumnAlias("Specification", "规格型号");    
    this.winGridViewPager1.AddColumnAlias("Material", "材质");    
    this.winGridViewPager1.AddColumnAlias("ItemBigType", "备件属类");    
    this.winGridViewPager1.AddColumnAlias("ItemType", "备件类别");    
    this.winGridViewPager1.AddColumnAlias("Unit", "单位");    
    this.winGridViewPager1.AddColumnAlias("Price", "单价");    
    this.winGridViewPager1.AddColumnAlias("Source", "来源");    
    this.winGridViewPager1.AddColumnAlias("StoragePos", "库位");    
    this.winGridViewPager1.AddColumnAlias("UsagePos", "使用位置");    
    this.winGridViewPager1.AddColumnAlias("StockQuantity", "当前库存");    
    this.winGridViewPager1.AddColumnAlias("WareHouse", "所属库房");    
    this.winGridViewPager1.AddColumnAlias("Dept", "所属部门");    
    this.winGridViewPager1.AddColumnAlias("Note", "备注");   
  
    #endregion    
   
    string where = GetConditionSql();    
    List<ItemDetailInfo> list = BLLFactory<ItemDetail>.Instance.Find(where, this.winGridViewPager1.PagerInfo);    
    string tableColumns = "ID|int,ItemNo,ItemName,StockQuantity|int,Manufacture,MapNo,Specification,Material,ItemBigType,ItemType,
Unit,Price|decimal,Source,StoragePos,UsagePos,Note,WareHouse,Dept";    
    DataTable dt = DataTableHelper.CreateTable(tableColumns);    
    DataRow dr = null;    
    foreach (ItemDetailInfo info in list)    
    {    
        dr = dt.NewRow();    
        dr["ID"] = info.ID;    
        dr["ItemBigType"] = info.ItemBigType;    
        dr["ItemName"] = info.ItemName;    
        dr["ItemNo"] = info.ItemNo;    
        dr["ItemType"] = info.ItemType;    
        dr["Manufacture"] = info.Manufacture;    
        dr["MapNo"] = info.MapNo;    
        dr["Material"] = info.Material;    
        dr["Note"] = info.Note;    
        dr["Price"] = info.Price;    
        dr["Source"] = info.Source;    
        dr["Specification"] = info.Specification;    
        dr["StoragePos"] = info.StoragePos;    
        dr["Unit"] = info.Unit;    
        dr["UsagePos"] = info.UsagePos;    
        dr["WareHouse"] = info.WareHouse;    
        dr["Dept"] = info.Dept;    
   
        StockInfo stockInfo = BLLFactory<Stock>.Instance.FindByItemNo(info.ItemNo);    
        int quantity = 0;    
        if (stockInfo != null)    
        {    
            quantity = stockInfo.StockQuantity;    
        }    
        dr["StockQuantity"] = quantity;    
        dt.Rows.Add(dr);    
    }    
   
    this.winGridViewPager1.DataSource = dt.DefaultView;//new WHC.Pager.WinControl.SortableBindingList<ItemDetailInfo>(list);    
    this.winGridViewPager1.PrintTitle = Portal.gc.gAppUnit + " -- " + "备件信息报表";    
}

下面提供相关分页控件的下载地址:

1、传统界面的的Winform分页控件:http://files.cnblogs.com/wuhuacong/WHC.Pager.WinControl.zip

2、Dotnetbar界面效果的Winform分页控件:http://files.cnblogs.com/wuhuacong/WHC.Pager.WinControlEx.zip

WInform分页控件的CHM格式帮助文档:http://files.cnblogs.com/wuhuacong/WinformPagerHelp.rar

Winform分页控件使用详细介绍相关推荐

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

    在之前介绍的Winform分页控件中,都以分页控件+显示表格控件作为一个整体性的控件,不可分开,这样做的目的是可以实现更多的操作,集成更多丰富的特性,减少我们开发的工作量,这种情况虽然适用于大多数的情 ...

  2. 猛犸Winform分页控件

    本Winform分页控件不于具体的数据源相关联,可随时设置每页显示记录行数和页码,简单实用,如下图 下载地址:http://download.csdn.net/detail/shunlu/808974 ...

  3. C# WPF DataGrid控件的详细介绍和推荐一些样式设计

    前面介绍过使用DataGrid简单绑定一个数据模型,接着介绍DataGrid的一些详细操作. 参考:C# WPF DataGrid的使用 定制DataGrid控件基本外观属性 RowBackgroun ...

  4. winform 分页控件分享(二)

    大数量分页,使用存储过程. 这个存储过程是网络上考的,呵呵.我把它给贴出来,希望原作者别砸我砖头..... ALTER    PROCEDURE SP_Pagination /**//* ****** ...

  5. 股票金融K线图控件AnyStock详细介绍教程

    AnyStock是一款基于XML/JSON的Flash金融图表解决方案,转换你的实时数据为具有交互功能的顶级图表,使你的数据直观地展现在Web页面上,控件支持滚动.下拉.动缩放效果等,并且提供了一系列 ...

  6. 照片美化和处理控件ColorSwap详细介绍

    ColorSwap是一款图形处理工具控件,可以对任何的数码图片进行颜色处理,并且保持原有图片的光泽和阴影 以HSV颜色空间进行先进的图像处理,使用该工具不仅可以极其容易地改变色调.饱和度等,还可以使用 ...

  7. c winform 打印 html,C# Winform 打印控件PrintDocument

    由于本着节约的原则,这里的打印都只是保存为.oxps格式的文件. 在我调试时每次打印完成后,窗体都会自己闪退. 在网上并没有相关资料,经过加入断点确认问题在 private void btnPrint ...

  8. winform常用控件介绍

    winform常用控件介绍 1.窗体 1 2.Label 控件 3 3.TextBox 控件 4 4.RichTextBox控件 5 5.NumericUpDown 控件 7 6.Button 控件 ...

  9. C# Winform 常用控件介绍

    1.窗体 1.常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体. (2) WindowState属性: 用来获取或设置窗体的窗口状态. 取值有三种: N ...

  10. winform自定义分页控件

    1.控件代码: public partial class PagerControl : UserControl {#region 构造函数public PagerControl() {Initiali ...

最新文章

  1. LeetCode简单题之七进制数
  2. mac 安装android jdk,Mac上 配置Android Sutdio的Java JDK环境
  3. JavaScript打印杨辉三角
  4. Altium Designer 发现的机密
  5. dlopen failed: library “libopencv_java4.so“ not found 解决
  6. 【Kotlin】Kotlin 面向对象 ( 类 | 成员变量 | 成员方法 | 封装 | 继承 | 多态 )
  7. CSS3盒模型box-sizing属性详解,布局更方便
  8. Spring——AOP
  9. 【Tiny4412】 Android系统的烧写
  10. Angular 自定义 structural 指令的一个例子
  11. python编程多行输入_python多行输入的方法有哪些
  12. liunx trac 插件使用之GanttCalendarPlugin
  13. 七、制作主题(二) Anatomy of a theme
  14. 微信oauth2接口获取用户的openid
  15. 20200723:198周周赛学习记录
  16. [原]浅谈几种服务器端模型——反应堆模式(epoll 简介) - _Boz - 博客园
  17. ffmpeg之vs编译
  18. 让部署到服务器上的springboot项目持续运行(nohup)
  19. 网站SEO优化--Flash站优化方法
  20. 中国铁塔行业市场企业投资及运营策略分析报告2022-2028年版

热门文章

  1. WIN11 TortoiseSVN 无论什么操作,都报同一个错误:请求的操作需要提升
  2. 记dubbo consumer服务因订阅其他有异常的服务导致超时的问题
  3. 应用程序开发选择工具应注重运行效率还是易用性
  4. 值得学习的言语 | 对话技巧 | 开场白
  5. dell服务器uefi启动u盘安装系统,uefi启动u盘安装系统怎么装|uefi u盘启动装系统步骤...
  6. ASML大举向中国出口光刻机,或在于忧虑中国光刻机技术取得突破
  7. art-template模板引擎和其它第三方模块搭配使用
  8. BZOJ2827 : 千山鸟飞绝
  9. 去掉你代码里的 document.write(script...
  10. 联想s40-70进入bios方法。