95992828九五至尊2

WinForm界面开发之,Winform分页控件使用详细介绍

一月 25th, 2019  |  882828九五至尊手机版

在程序中,分页总是永远的话题,因为数量连接很多居多,分页浮现在程序性能和数据查看感官方面获得很好的平衡,是一种理想的编程习惯和UI设计。

从今上篇小说《Winform分页控件最新版本发表,并提供依照DotNetBar界面的本子》介绍了最新版本的分页控件,并提供下载使用后,很六个人对分页控件相当感兴趣(毕竟Winform数据分页是很常见的),并关心该分页控件应该怎样使用,其实分页控件在前面很多篇小说中断断续续都有介绍,为了使大家对分页控件有个种类的认识,本篇详细介绍分页控件的一对属性设置及相关应用注意事项,使大家对该分页控件有一个更深的明白、跟系统的认识,以便在有关的体系支出中熟悉使用。
**
分页控件效果**

Winform中的分页控件可能没有Asp.net世界中的分页控件那么丰硕多彩,不过也有许多的分页控件可以接纳,种种人的或是都有一部分例外的事物,一些好的东西。就自身而言,我盼望控件可以尽量的多一些成效,耦合性低一些,例如我不想是根据存储进程的,因为自身不少顺序须要采纳Access作为数据库,一般的话,我还希望有导出Excel数据的机能,还有打印预览作用,由于我的数据源表头,如实体类集合、表格内容绑定的时候,表头是英文的,我须要变成中文的,其他的功效有则更好。本篇介绍我在我的共享软件中大量使用的分页控件,如送水管理序列软件、伤者资料管理软件等等,希望我们有趣味的话,可以一起谈谈使用该分页控件。以便整理吸收更加多好的特点,共同学习。

 882828九五至尊手机版 1

先给我们一个完好无缺感觉,那是我在送水软件中的界面显得,青色圈圈部分是分页控件的突显界面。

 

882828九五至尊手机版 2

882828九五至尊手机版 3 

大家可以看到,除了主导的分页外,还有其余职能,如导出当前页、导出全体页、打印列表、以及相关功效操作的菜单(只要完成了连带的接口,则显示均等的食谱,此外还有一对小地点,也是很常用关键的地点,就是间隔行的水彩变化,表头的粤语化,行提醒内容等等,我觉着这几个分页控件应该做的,更加是表头汉语化部分很重大,因为那么些分页控件的数据源是基于一般的靶子集合(如List<EntityInfo>())或者DataTable的,因而数据源的表头可能是英文的(一般都是^_^)。

心想事成步骤

导出Excel是大旨的效应,本控件扶助当前页导出,全体页导出二种方式,导出的Excel数据也照旧比较为难的,不是一般的格式哦。

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

882828九五至尊手机版 4

里头WinGridViewPager和WinGridView三个控件就是大家常用到的分页控件,两者用法大概同一,界面效果不一样在于WinGridViewPager具有分页工具条,而WinGridView是提供浮现所有内容,没有工具条。
882828九五至尊手机版 5

 

 

控件其余一项功效,也是集实用作用之所成,打印当前列表内容,如下图所示,该内容会保留用户在每个列表数据中的音讯,打印分歧的表头内容,如下图所示。

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

882828九五至尊手机版 6

3、在代码引用相关的代码完毕动态调用。 

882828九五至尊手机版 7

 

 

落到实处代码

那么控件应该怎么样使用呢,下边介绍一下运用的相干代码。

1、在窗体加载已毕中添加分页控件的落成代码,以On起始的是不无关系操作的兑现事件,如OnPageChanged表示分页控件页面暴发变化的时候,须要完毕的事件处理(那些是必须的),此外AppendedMenu是足以在分页控件自带菜单上加码的食谱,如下所示。注意,只要完结相关的事件处理,那么相应的上下文菜单将会并发,默许多少个正规的上下文菜单如下所示,包蕴新建、编辑选定项、删除选定项、打印列表、刷新列表菜单。
瞩目,为了使分页控件可以展现总数,并记住当前的分页,那么在OnPageChanged落到实处中必要修改分页控件的

1、首先在Form_Load事件中绑定相关的寄托处理事件,默认有“新建”、编辑选定项、删除、刷新、打印几个按钮,您可以在此基础上加码更加多的菜单。

RecordCount和

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

CurrenetPageIndex

            this.winGridViewPager1.ProgressBar = this.toolStripProgressBar1.ProgressBar;
            this.winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged);
            this.winGridViewPager1.OnStartExport += new EventHandler(winGridViewPager1_OnStartExport);

**那四个特性。 882828九五至尊手机版 8

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

若是要求充裕自己的菜系,则指定AppendedMenu对象即可。
882828九五至尊手机版 9

 

重大达成代码如下: 

2。已毕表头解析和地方的委托时间的事例代码如下.

 private void FrmCustomer_Load(object sender, EventArgs e)    

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

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

        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<Product>.Instance.Delete(row.Cells[“ID”].Value.ToString());
                }
                BindData();
            }
        }

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

        private void winGridViewPager1_OnEditSelected(object sender, EventArgs e)
        {
            DataGridView grid = sender as DataGridView;
            if (grid != null)
            {
                foreach (DataGridViewRow row in grid.SelectedRows)
                {
                    FrmEditProduct dlg = new FrmEditProduct();
                    dlg.ID = row.Cells[“ID”].Value.ToString();
                    if (DialogResult.OK == dlg.ShowDialog())
                    {
                        BindData();
                    }

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

                    break;
                }
            }
        }
        
        private void winGridViewPager1_OnAddNew(object sender, EventArgs e)
        {
            btnAddNew_Click(null, null);
        }

 

        private void winGridViewPager1_OnStartExport(object sender, EventArgs e)
        {
            PagerInfo pagerInfo = new PagerInfo();
            pagerInfo.CurrenetPageIndex = 1;
            pagerInfo.PageSize = int.MaxValue;
            this.winGridViewPager1.AllToExport = BLLFactory<Product>.Instance.GetAllToDataSet(pagerInfo).Tables[0];//product.GetAllToDataSet(pagerInfo).Tables[0];
        }

 

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

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

        private void BindData()
        {
            #region 添加别名解析
            this.winGridViewPager1.AddColumnAlias(“ID”, “编号”);
            this.winGridViewPager1.AddColumnAlias(“ProductType”, “产品品类”);
            this.winGridViewPager1.AddColumnAlias(“ProductName”, “产品名称”);
            this.winGridViewPager1.AddColumnAlias(“Specification”, “产品规格”);
            this.winGridViewPager1.AddColumnAlias(“Model”, “产品型号”);
            this.winGridViewPager1.AddColumnAlias(“OfferPrice”, “进货价”);
            this.winGridViewPager1.AddColumnAlias(“AdvisePrive”, “建议价”);
            this.winGridViewPager1.AddColumnAlias(“SalePrice”, “零售价”);
            this.winGridViewPager1.AddColumnAlias(“Manufacture”, “生产厂商”);
            this.winGridViewPager1.AddColumnAlias(“Manufacture_ID”, “厂商ID”);
            this.winGridViewPager1.AddColumnAlias(“Note”, “备注”);
            this.winGridViewPager1.AddColumnAlias(“LastUpdated”, “更新日期”);
            #endregion

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

            SearchCondition condition = new SearchCondition();
            condition.AddCondition(“ProductName”, this.txtName.Text, SqlOperator.Like)
                .AddCondition(“ProductType”, this.cmbProductType.Text, SqlOperator.Like)
                .AddCondition(“Specification”, this.cmbSpecNumber.Text, SqlOperator.Like)
                .AddCondition(“Note”, this.txtNote.Text, SqlOperator.Like)
                .AddCondition(“Manufacture”, this.cmbManufacture.Text, SqlOperator.Like);
            string where = condition.BuildConditionSql().Replace(“Where”, “”);

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

            List<ProductInfo> list = BLLFactory<Product>.Instance.Find(where, this.winGridViewPager1.PagerInfo);
            this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList<ProductInfo>(list);
        }

 

 

5、绑定自定义Datatable对象的完毕。

882828九五至尊手机版,那般就落到实处了分页控件的内容突显以及相关效率的菜谱挂接,完成后的菜谱显示可能是那样子的,如下图所示,是或不是还足以啊,呵呵.

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(“Ware豪斯(House)”, “所属库房”);    
    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 + ” — ” + “备件消息报表”;    
}

882828九五至尊手机版 10  
882828九五至尊手机版 11

  

 

 

最终呈上控件文件一个, 大家有趣味可以下载下载玩玩,使用有题目请在此留言.

下边提供有关分页控件的下载地址:

http://files.cnblogs.com/wuhuacong/PagerWinControl.rar

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 

 

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图