Winform分页控件使用详细介绍
2012-03-12 21:16
239 查看
自从上篇随笔《Winform分页控件最新版本发布,并提供基于DotNetBar界面的版本》介绍了最新版本的分页控件,并提供下载使用后,很多人对分页控件非常感兴趣(毕竟Winform数据分页是很常见的),并关注该分页控件应该如何使用,其实分页控件在之前很多篇随笔中断断续续都有介绍,为了使大家对分页控件有个系统的认识,本篇详细介绍分页控件的一些属性设置及相关使用注意事项,使大家对该分页控件有一个更深的了解、跟系统的认识,以便在相关的项目开发中熟练使用。分页控件效果
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/WinformUI/pager1.png)
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/winformControl/dotwinfrom_main2.png)
实现步骤
1、在Visual Studio开发环境的工具箱中,添加一个分页控件(可以其他名称)的项目,然后选择WHC.Pager.WinControl.dll文件,导入分页控件的工具箱图标,如下所示。
其中WinGridViewPager和WinGridView两个控件就是我们常用到的分页控件,两者用法几乎一致,界面效果不同在于WinGridViewPager具有分页工具条,而WinGridView是提供显示所有内容,没有工具条。
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/winformControl/PagerToolBox.png)
2、拖动到指定的窗体中。
3、在代码引用相关的代码实现动态调用。
实现代码
1、在窗体加载实现中添加分页控件的实现代码,以On开始的是相关操作的实现事件,如OnPageChanged表示分页控件页面发生变化的时候,需要实现的事件处理(这个是必须的),另外AppendedMenu是可以在分页控件自带菜单上增加的菜单,如下所示。注意,只要实现相关的事件处理,那么对应的上下文菜单将会出现,默认几个标准的上下文菜单如下所示,包含新建、编辑选定项、删除选定项、打印列表、刷新列表菜单。
注意,为了使分页控件能够显示总数,并记住当前的分页,那么在OnPageChanged实现中需要修改分页控件的
RecordCount和
CurrenetPageIndex
[b]这两个属性。[/b]
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/winformControl/PagerContextMenu.png)
如果需要添加自己的菜单,则指定AppendedMenu对象即可。
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/winformControl/PagerContextMenuApended.png)
主要实现代码如下:
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
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/WinformUI/pager1.png)
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/winformControl/dotwinfrom_main2.png)
实现步骤
1、在Visual Studio开发环境的工具箱中,添加一个分页控件(可以其他名称)的项目,然后选择WHC.Pager.WinControl.dll文件,导入分页控件的工具箱图标,如下所示。
其中WinGridViewPager和WinGridView两个控件就是我们常用到的分页控件,两者用法几乎一致,界面效果不同在于WinGridViewPager具有分页工具条,而WinGridView是提供显示所有内容,没有工具条。
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/winformControl/PagerToolBox.png)
2、拖动到指定的窗体中。
3、在代码引用相关的代码实现动态调用。
实现代码
1、在窗体加载实现中添加分页控件的实现代码,以On开始的是相关操作的实现事件,如OnPageChanged表示分页控件页面发生变化的时候,需要实现的事件处理(这个是必须的),另外AppendedMenu是可以在分页控件自带菜单上增加的菜单,如下所示。注意,只要实现相关的事件处理,那么对应的上下文菜单将会出现,默认几个标准的上下文菜单如下所示,包含新建、编辑选定项、删除选定项、打印列表、刷新列表菜单。
注意,为了使分页控件能够显示总数,并记住当前的分页,那么在OnPageChanged实现中需要修改分页控件的
RecordCount和
CurrenetPageIndex
[b]这两个属性。[/b]
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/winformControl/PagerContextMenu.png)
如果需要添加自己的菜单,则指定AppendedMenu对象即可。
![](http://images.cnblogs.com/cnblogs_com/wuhuacong/winformControl/PagerContextMenuApended.png)
主要实现代码如下:
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分页控件使用详细介绍
- Winform分页控件使用详细介绍
- Winform分页控件使用详细介绍
- Winform分页控件使用详细介绍
- Winform分页控件使用详细介绍
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- 在DevExpress程序中使用Winform分页控件直接录入数据并保存
- Halcon的HWindowControl控件在WinForm程序中的使用介绍
- Xceed WPF 3D显示控件Xceed 3D Views for WPF控件详细介绍使用及下载
- asp.net Repeater控件的说明及详细介绍及使用方法
- 个人使用的WinForm控件【目前只含分页控件及验证码控件】
- asp.net Repeater控件的说明及详细介绍及使用方法
- Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)
- 银光实时压缩和解压控件Xceed Real-Time Zip for Silverlight控件下载及详细介绍使用方法
- Repeater控件的说明及详细介绍及使用方法
- 控件介绍:CToolTipCtrl使用详细解说
- TimePickerDialog控件详细使用介绍
- 移动控件介绍及详细使用方法
- 移动控件介绍及详细使用方法
- 详细介绍微信小程序使用WEB-VIEW控件进行微信支付