您的位置:首页 > 移动开发 > Objective-C

Winform分页控件使用详细介绍

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





实现步骤

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

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



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

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

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

CurrenetPageIndex
[b]这两个属性。[/b]



如果需要添加自己的菜单,则指定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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息