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

Database2Sharp是一款代码生成工具和数据库文档生成工具,该工具一直伴随着我及我的粉丝们经历过各种各样的项目开发,在实际开发中能带来效率的提高及编程的快乐。不过自上个6.0版本以来,我一直忙于各种项目及研究中,很少继续把新的思想整合进去,最近在做我的Winform开发框架的整理工作,觉得应该改进这段时间来发现的问题,并融入已经逐渐完善的Winform开发框架基础上来,于是经过几天的努力,把该代码生成工具的一些缺陷修复并增加了Winform界面代码生成的功能(以前一直只是生成底层及Web界面层),并重新命名版本号为7.0。以后再继续完善后,在此大版本上再继续升级吧。 

 威尼斯人注册 1

威尼斯人注册 2

 

 

威尼斯人注册 3 

本次主要的修改如下:

实现步骤

1)修改设置不重新加载数据库信息。

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

威尼斯人注册 4 

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

以前版本,为了保证对数据库基础信息的及时更新,只要对一些关键的参数设置,通常都要重新刷新数据库基础信息(如表、列等基础信息),这样生成的代码就会保证使用最新的设置信息。如上图中的过滤表前缀的参数,是为了把表名称转换为友好名称的类名而定义的,他是在数据库加载的时候,自动把表别名信息生成的。

 

这个问题使用上一直感觉不太好,7.0版本修复了这个问题,把相关的信息保存的同时,在内存中对数据库表、字段等基础对象进行了更新,确保使用最新配置而无需重新加载整个数据库信息。

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

 

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

2)Winform界面代码可配置生成

 

说起Winform界面的代码生成,一般来说就两种界面比较典型,一个是查询列表显示界面,一个是数据查看编辑界面。本功能也主要是提供这两类界面代码的生成,通过配置查询列表中的条件字段以及查询列表字段显示信息,就可以合理生成符合我的WInform框架要求的界面代码,查询列表显示界面类继承自BaseDock基础类。另一方面,通过配置数据查看编辑界面的编辑字段,数据检查字段,判断关键数据重复的字段等参数,可以生成较为完善的数据查看编辑界面代码,生成界面如下所示。

实现代码

威尼斯人注册 6 

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

以上参数只要执行生成代码一次,即会自动保存起来,下次打开相同表的时候,会把之前的配置信息还原,方便用户的多次操作。由于界面在不同的界面控件(如DevExpress、传统界面等)处理上有所不同,因此生成的界面代码也会根据用户的设置信息进行选择性生成。另外界面代码是我的Winform框架体系里面一部分,所以整合了我的分页控件、基础窗体类的继承等特点,如果你看不懂,可以多看看我的Winform框架文章或者分页控件文章介绍。

RecordCount和

Winform界面代码生成后,会直接在代码编辑窗体中打开,用户可以复制或者保存起来放到VS的编辑器中进行相应的修改,后续的工作应该较为轻松了。

CurrenetPageIndex

威尼斯人注册 7 

**这两个属性。 威尼斯人注册 8

下面我们来分别看看生成的代码效果如何吧。

如果需要添加自己的菜单,则指定AppendedMenu对象即可。
威尼斯人注册 9

1)查询列表界面类

主要实现代码如下: 

威尼斯人注册 10威尼斯人注册 11View Code

 private void FrmCustomer_Load(object sender, EventArgs e)    

using System;
using System.Text;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.ComponentModel;
using System.Collections.Generic;

{    
    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;   
}

using WHC.Pager.Entity;
using WHC.OrderWater.Commons;
using WHC.Dictionary;

 

using WHC.TestProject.BLL;
using WHC.TestProject.Entity;

2、其他代码的实现如下所示,包含分页事件、刷新事件、删除事件、编辑事件、新增事件、导出Excel事件等。 

namespace WHC.TestProject.UI
{
    public partial class FrmItemDetail : BaseDock
    {
        public FrmItemDetail()
        {
            InitializeComponent();

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();    
}

            InitDictItem();

 

            this.winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged);
            this.winGridViewPager1.OnStartExport += new EventHandler(winGridViewPager1_OnStartExport);
            this.winGridViewPager1.OnEditSelected += new EventHandler(winGridViewPager1_OnEditSelected);
            this.winGridViewPager1.OnAddNew += new EventHandler(winGridViewPager1_OnAddNew);
            this.winGridViewPager1.OnDeleteSelected += new EventHandler(winGridViewPager1_OnDeleteSelected);
            this.winGridViewPager1.OnRefresh += new EventHandler(winGridViewPager1_OnRefresh);
            this.winGridViewPager1.AppendedMenu = this.contextMenuStrip1;
            this.winGridViewPager1.ShowLineNumber = true;
            this.winGridViewPager1.dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);
        }
        
        /// <summary>
        /// 绑定数据后,分配各列的宽度
        /// </summary>
        void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
威尼斯人注册,        {
            if (this.winGridViewPager1.dataGridView1.Columns.Count > 0)
            {
                this.winGridViewPager1.dataGridView1.Columns[“ID”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“ItemNo”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“ItemName”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“Manufacture”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“MapNo”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“Specification”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“Material”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“ItemBigType”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“ItemType”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“Unit”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“Price”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“Source”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“StoragePos”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“UsagePos”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“Note”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“WareHouse”].Width = 100;
                this.winGridViewPager1.dataGridView1.Columns[“Dept”].Width = 100;
            }
        }

 

        /// <summary>
        /// 编写初始化窗体的实现,可以用于刷新
        /// </summary>
        public override void  FormOnLoad()
        {   
            BindData();
        }
        
        /// <summary>
        /// 初始化字典列表内容
        /// </summary>
        private void InitDictItem()
        {
            //初始化代码
        }
        
        /// <summary>
        /// 分页控件刷新操作
        /// </summary>
        private void winGridViewPager1_OnRefresh(object sender, EventArgs e)
        {
            BindData();
        }
        
        /// <summary>
        /// 分页控件删除操作
        /// </summary>
        private void winGridViewPager1_OnDeleteSelected(object sender, EventArgs e)
        {
            if (MessageUtil.ShowYesNoAndTips(“您确定删除选定的记录么?”) == DialogResult.No)
            {
                return;
            }

3、如果不想把所有的实体类属性或者表字段都显示处理(默认全部显示),那么可以设置属性DisplayColumns即可。
this.winGridViewPager1.DisplayColumns = “ID,ItemNo,ItemName,Manufacture,MapNo,Specification,StockQuantity,AlarmQuantity,WareHouse”;
  

            DataGridView grid = this.winGridViewPager1.dataGridView1;
            if (grid != null)
            {
                foreach (DataGridViewRow row in grid.SelectedRows)
                {
                    BLLFactory<ItemDetail>.Instance.Delete(row.Cells[“ID”].Value.ToString());
                }
            }
            
            BindData();
        }
        
        /// <summary>
        /// 分页控件编辑项操作
        /// </summary>
        private void winGridViewPager1_OnEditSelected(object sender, EventArgs e)
        {
            DataGridView grid = this.winGridViewPager1.dataGridView1;
            if(grid.SelectedRows.Count == 0) return;

4、设备报表标题如下所示。 

            string ID = grid.SelectedRows[0].Cells[“ID”].Value.ToString();
            List<string> IDList = new List<string>();
            if (grid != null)
            {
                foreach (DataGridViewRow row in grid.Rows)
                {
                    IDList.Add(row.Cells[“ID”].Value.ToString());
                }
            }

this.winGridViewPager1.PrintTitle = Portal.gc.gAppUnit + ” — ” + “备件信息报表”;
  

            if (!string.IsNullOrEmpty(ID))
            {
                FrmEditItemDetail dlg = new FrmEditItemDetail();
                dlg.ID = ID;
                dlg.IDList = IDList;
                if (DialogResult.OK == dlg.ShowDialog())
                {
                    BindData();
                }
            }
        }
        
        /// <summary>
        /// 分页控件新增操作
        /// </summary>        
        private void winGridViewPager1_OnAddNew(object sender, EventArgs e)
        {
            btnAddNew_Click(null, null);
        }
        
        /// <summary>
        /// 分页控件全部导出操作前的操作
        /// </summary> 
        private void winGridViewPager1_OnStartExport(object sender, EventArgs e)
        {
            string where = GetConditionSql();
            this.winGridViewPager1.AllToExport = BLLFactory<ItemDetail>.Instance.FindToDataTable(where);
        }

发表评论

电子邮件地址不会被公开。 必填项已用*标注