Winform分页控件使用详细介绍

自从上篇随笔《 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值