Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新.docx

上传人:小飞机 文档编号:3169447 上传时间:2023-03-11 格式:DOCX 页数:11 大小:40.23KB
返回 下载 相关 举报
Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新.docx_第1页
第1页 / 共11页
Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新.docx_第2页
第2页 / 共11页
Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新.docx_第3页
第3页 / 共11页
Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新.docx_第4页
第4页 / 共11页
Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新.docx》由会员分享,可在线阅读,更多相关《Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新.docx(11页珍藏版)》请在三一办公上搜索。

1、Winform分页控件重大更新,并实现普通DotNetBarDevExpress三大本整合更新Winform分页控件重大更新,并实现普通版、DotNetBar、DevExpress三大版本整合更新(附各种例子源码) 在Winform开发中,一直离不开分页处理,好的分页控件封装,能为开发节省很多时间和繁琐工作,对分页控件一直的改进和完善,也是我的兴趣之一。本次主要实现对分页控件的全面重构,优化功能及界面的处理,并统一完成普通版、基于DotNetbar界面控件版本、DevExpress界面控件版本三大版本的发布,这几个界面版本,除了界面表现效果不一样外,所有的功能展示及使用代码完全一致,保证用户的

2、知识投资及给客户良好的使用操作。本次主要增加的功能有:可通过界面设置列表显示的列,可复制选定的行信息,可设置显示的行号、可设置显示间隔行的颜色等功能。下面分别对几个例子的截图进行总体介绍,然后在详细介绍 1)普通版效果图 上图中,红色的菜单是分页控件内置的菜单项,其他程序附加是扩展菜单项目,其中复制选定行信息、设置表格显示列、打印列表是对表格基本的操作功能。下面两个版本的控件右键菜单均表现一致。 2) 基于DotNetbar界面控件版本 3) 基于DevExpress界面控件版本 使用分页控件的基础代码,在所有以上版本中,代码均一致,只是一些特殊的操作,需要利用到不同的控件,有所差异而已。初始

3、化分页控件代码如下所示。 private void FrmCustomer_Load(object sender, EventArgs e) this.winGridViewPager1.ProgressBar = this.toolStripProgressBar1.ProgressBar; this.winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged); this.winGridViewPager1.OnStartExport += new EventHandler(winG

4、ridViewPager1_OnStartExport); this.winGridViewPager1.OnEditSelected += new EventHandler(winGridViewPager1_OnEditSelected); this.winGridViewPager1.OnDeleteSelected += new EventHandler(winGridViewPager1_OnDeleteSelected); this.winGridViewPager1.OnRefresh += new EventHandler(winGridViewPager1_OnRefresh

5、); this.winGridViewPager1.OnAddNew += new EventHandler(winGridViewPager1_OnAddNew); this.winGridViewPager1.AppendedMenu = this.contextMenuStrip1;/追加额外菜单项目 this.winGridViewPager1.ShowLineNumber = true;/显示行号 this.winGridViewPager1.PagerInfo.PageSize = 30;/页面大小 this.winGridViewPager1.EventRowBackColor

6、= Color.LightCyan;/间隔颜色 BindData; 以上是对分页控件的相关事件进行处理,如果实现了相关的事件,那么相应的菜单就会在右键菜单中出现,否则不会出现,相应的事件就是具体对应操作的处理菜单操作。另外,分页控件的一些属性,如是否显示行号、页面显示记录大小、间隔颜色等属性也可以在这里设置。 这些初始化设置完成后,一般查询界面都会有一个条件的组合,然后通过组合条件查询数据库记录并显示,显示的时候,分页控件可以设置对应字段的中文显示名称,显示的字段列,显示顺序等。显示字段的顺序就是列表的显示顺序,这个特性也是新版本增加的功能之一。 private void winGridVie

7、wPager1_OnPageChanged(object sender, EventArgs e) BindData; / / 根据查询条件构造查询语句 / / private string GetSearchSql SearchCondition condition = new SearchCondition; condition.AddCondition(Number, this.txtNumber.Text, SqlOperator.Like) .AddCondition(Name, this.txtName.Text, SqlOperator.Like) .AddCondition(T

8、ype, this.cmbType.Text, SqlOperator.Like) .AddCondition(Area, this.cmbArea.Text, SqlOperator.Like) .AddCondition(Address, this.txtAddress.Text, SqlOperator.Like) .AddCondition(Company, this.txtCompany.Text, SqlOperator.Like) .AddCondition(Note, this.txtNote.Text, SqlOperator.Like) .AddCondition(Tele

9、phone1, this.txtTelephone.Text, SqlOperator.Like, true, Telephone) .AddCondition(Telephone2, this.txtTelephone.Text, SqlOperator.Like, true, Telephone) .AddCondition(Telephone3, this.txtTelephone.Text, SqlOperator.Like, true, Telephone) .AddCondition(Telephone4, this.txtTelephone.Text, SqlOperator.L

10、ike, true, Telephone) .AddCondition(Telephone5, this.txtTelephone.Text, SqlOperator.Like, true, Telephone); if (chkUseDate.Checked) condition.AddCondition(CreateDate, dateTimePicker1.Value.ToString(yyyy-MM-dd), SqlOperator.MoreThanOrEqual, true) .AddCondition(CreateDate, dateTimePicker2.Value.AddDay

11、s(1).ToString(yyyy-MM-dd), SqlOperator.LessThanOrEqual, true); string where = condition.BuildConditionSql.Replace(Where, ); return where; private void BindData #region 添加别名解析 /DisplayColumns与显示的字段名或者实体属性一致,大小写不敏感,顺序代表显示顺序,用逗号或者|分开 this.winGridViewPager1.DisplayColumns = Number,NAME,type,Area,Company

12、,Address,Telephone1,Telephone2,Telephone3,Telephone4,Telephone5,CreateDate,Note,LastUpdated; this.winGridViewPager1.AddColumnAlias(ID, 编号); this.winGridViewPager1.AddColumnAlias(Number, 客户编号); this.winGridViewPager1.AddColumnAlias(Name, 客户名称); this.winGridViewPager1.AddColumnAlias(Type, 客户类型); this.

13、winGridViewPager1.AddColumnAlias(Area, 客户地区); this.winGridViewPager1.AddColumnAlias(Company, 客户单位); this.winGridViewPager1.AddColumnAlias(Address, 客户地址); this.winGridViewPager1.AddColumnAlias(Telephone1, 电话1); this.winGridViewPager1.AddColumnAlias(Telephone2, 电话2); this.winGridViewPager1.AddColumnAl

14、ias(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.w

15、inGridViewPager1.AddColumnAlias(LastUpdated, 更新日期); #endregion string where = GetSearchSql; this.winGridViewPager1.DataSource = BLLFactory.Instance.Find(where, this.winGridViewPager1.PagerInfo); private void btnSearch_Click(object sender, EventArgs e) BindData; 很多人以前看过我介绍分页控件的用法的时候,总会觉得上面的数据绑定方式看似简单

16、,实际操作可能绑定数据总是有问题,因为不知道Find函数里面需要实现那些操作,因为这些是基于我框架的应用逻辑。其实Find方法就是根据分页属性计算获取对应记录,然后把总记录数赋值给分页控件的属性。 下面我们来介绍一个不需要依赖我的Winform框架类,只是引用微软EnterpriseLibary数据库操作类即可完成的操作,因为最新的分页控件集成了一个基于Oracle、SqlServer、Access、Mysql数据库的分页逻辑,只需要使用PagerHelper这个类,传入相关的参数即可。 分页控件绑定数据如下代码所示。 private void BindData #region 添加别名解析

17、/DisplayColumns与显示的字段名或者实体属性一致,大小写不敏感,顺序代表显示顺序,用逗号或者|分开 this.winGridViewPager1.DisplayColumns = Number,NAME,type,Area,Company,Address,Telephone1,Telephone2,Telephone3,Telephone4,Telephone5,CreateDate,Note,LastUpdated; this.winGridViewPager1.AddColumnAlias(ID, 编号); this.winGridViewPager1.AddColumnAli

18、as(Number, 客户编号); this.winGridViewPager1.AddColumnAlias(Name, 客户名称); this.winGridViewPager1.AddColumnAlias(Type, 客户类型); this.winGridViewPager1.AddColumnAlias(Area, 客户地区); this.winGridViewPager1.AddColumnAlias(Company, 客户单位); this.winGridViewPager1.AddColumnAlias(Address, 客户地址); this.winGridViewPager

19、1.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(Cre

20、ateDate, 开户日期); this.winGridViewPager1.AddColumnAlias(Shop_ID, 分店ID); this.winGridViewPager1.AddColumnAlias(Note, 备注); this.winGridViewPager1.AddColumnAlias(LastUpdated, 更新日期); #endregion string where = GetSearchSql; this.winGridViewPager1.DataSource = FindToDataTable(where, this.winGridViewPager1.P

21、agerInfo); FindToDataTable函数的相关实现代码如下所示: / / 标准的记录查询函数 / / / / 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, wher

22、e); 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 = S

23、qlTable(dataSql); return dt; / / 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。 / / SQL语句 / / 返回查询结果的所有记录的第一个字段,用逗号分隔。 / public string SqlValueList(string sql) StringBuilder result = new StringBuilder; Database db = DatabaseFactory.CreateDatabase; DbCommand command = db.GetSqlStringCommand(sql); using (IDataRea

24、der dr = db.ExecuteReader(command) while (dr.Read) result.AppendFormat(0, dr0.ToString); string strResult = result.ToString.Trim(,); return strResult; / / 执行SQL查询语句,返回所有记录的DataTable集合。 / / SQL查询语句 / public DataTable SqlTable(string sql) Database db = DatabaseFactory.CreateDatabase; DbCommand command

25、 = db.GetSqlStringCommand(sql); return db.ExecuteDataSet(command).Tables0; 利用控件内置的分页辅助类 WHC.Pager.WinControl.PagerHelper,你就可以不用理会各种不同数据库的分页实现逻辑,只需要按照以上的调用方式调用即可,该类传入的第一个参数,既可以是表名,也可以是一段查询语句,非常方便各种复杂条件的查询分页。 最新分页控件的相关界面截图如下所示。 1)设置表格列的可见性 2)表格数据打印预览 3)行数据基本信息提示 4)复制选定行后在文本中查看 为了使得大家对我的Winform分页控件在不同情况下的深入了解和使用,我特意编写了几种情况下的使用标准例子,供大家下载学习研究,例子包括利用基于泛型模式的Winform开发框架结构的分页控件使用例子,基于传统简单数据绑定的分页控件使用例子, 基于DotNetBar界面控件及简单数据绑定的分页控件使用例子,基于DevExpress界面控件及简单数据绑定的分页控件使用例子,如下图所示。 各种例子的源码的下载地址如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号