Winform分页控件重大更新,并已毕普通版、DotNetBar、DevExpress三大本子整合创新(附各个例子源码)

        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(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;//追加额外菜单连串
            this.winGridViewPager1.ShowLineNumber = true;//突显行号
            this.winGridViewPager1.PagerInfo.PageSize = 30;//页面大小
            this.winGridViewPager1.伊夫ntRowBackColor = Color.LightCyan;//间隔颜色

       private void winGridViewPager1_OnPageChanged(object sender, EventArgs e)
        {
            BindData();
        }

分页控件绑定数据如下代码所示。

            using (IDataReader dr = db.ExecuteReader(command))
            {
                while (dr.Read())
                {
                    result.AppendFormat(“{0},”, dr[0].ToString());
                }
            }
            string strResult = result.ToString().Trim(‘,’);
            return strResult;
        }

        /// <summary>    
        /// 执行SQL查询语句,重临查询结果的有着记录的率先个字段,用逗号分隔。    
        /// </summary>    
        /// <param name=”sql”>SQL语句</param>    
        /// <returns>    
        /// 重回查询结果的保有记录的率先个字段,用逗号分隔。    
        /// </returns>    
        public string SqlValueList(string sql)
        {
            StringBuilder result = new StringBuilder();
            Database db = DatabaseFactory.CreateDatabase();
            DbCommand command = db.GetSqlStringCommand(sql);

            if (chkUseDate.Checked)
            {
                condition.AddCondition(“CreateDate”, dateTimePicker1.Value.ToString(“yyyy-MM-dd”), SqlOperator.MoreThanOrEqual, true)
                    .AddCondition(“CreateDate”, dateTimePicker2.Value.AddDays(1).ToString(“yyyy-MM-dd”), SqlOperator.LessThanOrEqual, true);

Oracle 1 

Oracle 2 

2) 基于DotNetbar界面控件版本

上图中,藏紫色的菜系是分页控件内置的菜单项,其他程序附加是增加菜单种类,其中复制选定行音讯、设置表格显示列、打印列表是对表格基本的操作功能。下边七个本子的控件右键菜单均显示同样。 

            string where = GetSearchSql();
            this.winGridViewPager1.DataSource = BLLFactory<Customer>.Instance.Find(where, this.winGridViewPager1.PagerInfo);
        }

            string where = GetSearchSql();
            this.winGridViewPager1.DataSource = FindToDataTable(where, this.winGridViewPager1.PagerInfo);
       } 

3) 基于DevExpress界面控件版本

3)行数据大旨新闻提醒 

        /// <summary>
        /// 依据查询条件构造查询语句
        /// </summary>
        /// <returns></returns>
        private string GetSearchSql()
Oracle,        {
            SearchCondition condition = new SearchCondition();
            condition.AddCondition(“Number”, this.txtNumber.Text, SqlOperator.Like)
                .AddCondition(“Name”, this.txtName.Text, SqlOperator.Like)
                .AddCondition(“Type”, 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(“Telephone1”, 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.Like, true, “Telephone”)
                .AddCondition(“Telephone5”, this.txtTelephone.Text, SqlOperator.Like, true, “Telephone”);

            string value = SqlValueList(countSql);
            pagerInfo.RecordCount = Convert.ToInt32(value);//为了突显具体的新闻,要求安装总记录数
            DataTable dt = SqlTable(dataSql);
            return dt;
        }

 

在Winform开发中,平昔离不开分页处理,好的分页控件封装,能为开支节省比比皆是时光和麻烦工作,对分页控件一向的鼎新和周到,也是自个儿的志趣之一。本次重大完毕对分页控件的完美重构,优化功能及界面的拍卖,并统一落成普通版、基于DotNetbar界面控件版本、DevExpress界面控件版本三大本子的揭露,这多少个界面版本,除了界面表现效果不均等外,所有的功力浮现及使用代码完全一致,保险用户的知识投资及给客户可以的应用操作。这次重大扩充的效能有:可透过界面设置列表突显的列,可复制选定的行信息,可安装突显的行号、可安装显示间隔行的颜料等职能。上面分别对多少个例子的截图举行总体介绍,然后在事无巨细介绍

 利用控件内置的分页帮忙类

 4)复制选定行后在文件中查阅

FindToDataTable函数的相干兑现代码如下所示:

上面我们来介绍一个不需求保护我的Winform框架类,只是引用微软EnterpriseLibary数据库操作类即可形成的操作,因为最新的分页控件集成了一个依据Oracle、SqlServer、Access、Mysql数据库的分页逻辑,只需求选拔PagerHelper这么些类,传入相关的参数即可。

动用分页控件的底蕴代码,在装有以上版本中,代码均一致,只是部分非正规的操作,需求使用到区其余控件,有所差距而已。早先化分页控件代码如下所示。

Oracle 3 

各个例子的源码的下载地址如下:http://www.iqidi.com/download/TestWinPager_Demo.rar 

1)设置表格列的可知性 

新型分页控件的相关界面截图如下所示。

            #endregion

为了使得大家对自家的Winform分页控件在分化景色下的铁画银钩驾驭和使用,我更加编写了三种情景下的应用专业例子,供大家下载学习探讨,例子包罗使用基于泛型格局的Winform开发框架结构的分页控件使用例子,基于传统精炼多少绑定的分页控件使用例子,
基于DotNetBar界面控件及简便多少绑定的分页控件使用例子,基于DevExpress界面控件及不难多少绑定的分页控件使用例子,如下图所示。

 以上是对分页控件的有关事件展开处理,假使完毕了连带的轩然大波,那么相应的菜谱(如新增、编辑、删除等)就会在右键菜单中冒出,否则不会现出,相应的轩然大波就是切实对应操作的拍卖菜单操作。其余,分页控件的一部分特性,如是还是不是出示行号、页面突显记录大小、间隔颜色等特性也可以在此地安装。

那一个早先化设置完毕后,一般查询界面都会有一个口径的组合,然后经过整合条件查询数据库记录并出示,显示的时候,分页控件可以安装对应字段的华语突显名称,呈现的字段列,显示顺序等。来得字段的一一就是列表的显得顺序,那几个特点也是新本子增加的法力之一。        

        private void BindData()
        {
            #region 添加别名解析
            //DisplayColumns与体现的字段名或者实体性质一致,大小写不灵敏,顺序代表突显顺序,用逗号或者|分开
            this.winGridViewPager1.DisplayColumns = “Number,NAME,type,Area,Company,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.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

            BindData();
       }

 Oracle 4

Oracle 5 
 2)表格数据打印预览

        private void BindData()
        {
            #region 添加别名解析
            //DisplayColumns与呈现的字段名或者实体性质一致,大小写不灵活,顺序代表呈现顺序,用逗号或者|分开
            this.winGridViewPager1.DisplayColumns = “Number,NAME,type,Area,Company,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.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”, “更新日期”);

 

 Oracle 6

 

        private void btnSearch_Click(object sender, EventArgs e)
        {
            BindData();
        }

            }
            string where = condition.BuildConditionSql().Replace(“Where”, “”);
            return where;
        }

WHC.Pager.WinControl.PagerHelper,你就可以毫不理会各类不相同数据库的分页落成逻辑,只须要遵守上述的调用格局调用即可,该类传入的首先个参数,既可以是表名,也得以是一段查询语句,非凡有利种种复杂条件的查询分页

        /// <summary>    
        /// 执行SQL查询语句,重回所有记录的DataTable集合。    
        /// </summary>    
        /// <param name=”sql”>SQL查询语句</param>    
        /// <returns></returns>    
        public DataTable SqlTable(string sql)
        {
            Database db = DatabaseFactory.CreateDatabase();
            DbCommand command = db.GetSqlStringCommand(sql);
            return db.ExecuteDataSet(command).Tables[0];
         }

1)普通版(即不引用任何第三方界面控件)效果图

广大人往日看过自家介绍分页控件的用法的时候,总会觉得上边的数额绑定格局接近简单,实际操作可能绑定数据连接有难题,因为不明了Find函数里面需求已毕那个操作,因为这么些是基于自身框架的应用逻辑。其实Find方法就是根据分页属性计算获取相应记录,然后把总记录数赋值给分页控件的特性。

Oracle 7 

        /// <summary>
        /// 标准的记录查询函数
        /// </summary>
        /// <param name=”where”></param>
        /// <param name=”pagerInfo”></param>
        /// <returns></returns>
        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, where);
            string countSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.Access, true);
            string dataSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.Access, false);

Oracle 8 

相关文章