原文地址:http://www.cnblogs.com/nosnowwolf/archive/2008/07/22/1248796.html

http://blog.csdn.net/wanglong7505/archive/2010/01/16/5193085.aspx

效果如下:

自定义winform分页控件(转)

代码实现如下:

自定义winform分页控件(转)namespace WindowsApp.MyControl
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 申明委托
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) /// <param name="e"></param>
自定义winform分页控件(转) /// <returns></returns>
自定义winform分页控件(转) public delegate int EventPagingHandler(EventPagingArg e);
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 分页控件呈现
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public partial class Pager : UserControl
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) public Pager()
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)            InitializeComponent();
自定义winform分页控件(转)        }
自定义winform分页控件(转) public event EventPagingHandler EventPaging;
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 每页显示记录数
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) private int _pageSize = 20;
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 每页显示记录数
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public int PageSize
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)自定义winform分页控件(转) get 自定义winform分页控件(转){ return _pageSize; }
自定义winform分页控件(转) set
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _pageSize = value;
自定义winform分页控件(转)                GetPageCount();
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) private int _nMax = 0;
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 总记录数
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public int NMax
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)自定义winform分页控件(转) get 自定义winform分页控件(转){ return _nMax; }
自定义winform分页控件(转) set
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _nMax = value;
自定义winform分页控件(转)                GetPageCount();
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) private int _pageCount = 0;
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 页数=总记录数/每页显示记录数
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public int PageCount
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)自定义winform分页控件(转) get 自定义winform分页控件(转){ return _pageCount; }
自定义winform分页控件(转)自定义winform分页控件(转) set 自定义winform分页控件(转){ _pageCount = value; }
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) private int _pageCurrent = 0;
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 当前页号
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public int PageCurrent
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)自定义winform分页控件(转) get 自定义winform分页控件(转){ return _pageCurrent; }
自定义winform分页控件(转)自定义winform分页控件(转) set 自定义winform分页控件(转){ _pageCurrent = value; }
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转)
自定义winform分页控件(转) private void GetPageCount()
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) if (this.NMax > 0)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(this.NMax) / Convert.ToDouble(this.PageSize)));
自定义winform分页控件(转)            }
自定义winform分页控件(转) else
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.PageCount = 0;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 翻页控件数据绑定的方法
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public void Bind()
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) if (this.EventPaging != null)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.NMax = this.EventPaging(new EventPagingArg(this.PageCurrent));
自定义winform分页控件(转)            }
自定义winform分页控件(转)
自定义winform分页控件(转) if (this.PageCurrent > this.PageCount)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.PageCurrent = this.PageCount;
自定义winform分页控件(转)            }
自定义winform分页控件(转) if (this.PageCount == 1)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.PageCurrent = 1;
自定义winform分页控件(转)            }
自定义winform分页控件(转)            lblPageCount.Text = this.PageCount.ToString();
自定义winform分页控件(转) this.lblMaxPage.Text = "共"+this.NMax.ToString()+"条记录";
自定义winform分页控件(转) this.txtCurrentPage.Text = this.PageCurrent.ToString();
自定义winform分页控件(转)
自定义winform分页控件(转) if (this.PageCurrent == 1)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.btnPrev.Enabled = false;
自定义winform分页控件(转) this.btnFirst.Enabled = false;
自定义winform分页控件(转)            }
自定义winform分页控件(转) else
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                btnPrev.Enabled = true;
自定义winform分页控件(转)                btnFirst.Enabled = true;
自定义winform分页控件(转)            }
自定义winform分页控件(转)
自定义winform分页控件(转) if (this.PageCurrent == this.PageCount)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.btnLast.Enabled = false;
自定义winform分页控件(转) this.btnNext.Enabled = false;
自定义winform分页控件(转)            }
自定义winform分页控件(转) else
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                btnLast.Enabled = true;
自定义winform分页控件(转)                btnNext.Enabled = true;
自定义winform分页控件(转)            }
自定义winform分页控件(转)
自定义winform分页控件(转) if (this.NMax == 0)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                btnNext.Enabled = false;
自定义winform分页控件(转)                btnLast.Enabled = false;
自定义winform分页控件(转)                btnFirst.Enabled = false;
自定义winform分页控件(转)                btnPrev.Enabled = false;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) private void btnFirst_Click(object sender, EventArgs e)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)            PageCurrent = 1;
自定义winform分页控件(转) this.Bind();
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) private void btnPrev_Click(object sender, EventArgs e)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)            PageCurrent -= 1;
自定义winform分页控件(转) if (PageCurrent <= 0)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                PageCurrent = 1;
自定义winform分页控件(转)            }
自定义winform分页控件(转) this.Bind();
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) private void btnNext_Click(object sender, EventArgs e)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.PageCurrent += 1;
自定义winform分页控件(转) if (PageCurrent > PageCount)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                PageCurrent = PageCount;
自定义winform分页控件(转)            }
自定义winform分页控件(转) this.Bind();
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) private void btnLast_Click(object sender, EventArgs e)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)            PageCurrent = PageCount;
自定义winform分页控件(转) this.Bind();
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) private void btnGo_Click(object sender, EventArgs e)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) if (this.txtCurrentPage.Text != null && txtCurrentPage.Text != "")
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) if (Int32.TryParse(txtCurrentPage.Text, out _pageCurrent))
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.Bind();
自定义winform分页控件(转)                }
自定义winform分页控件(转) else
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                    Common.MessageProcess.ShowError("输入数字格式错误!");
自定义winform分页控件(转)                }
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转)    }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 自定义事件数据基类
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public class EventPagingArg : EventArgs
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) private int _intPageIndex;
自定义winform分页控件(转) public EventPagingArg(int PageIndex)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)            _intPageIndex = PageIndex;
自定义winform分页控件(转)        }
自定义winform分页控件(转)    }
自定义winform分页控件(转)}

控件功能基本实现。

如何绑定数据呢?

大数量分页,使用存储过程。

这个存储过程是网络上考的,呵呵。我把它给贴出来,希望原作者别砸我砖头。。。。。

自定义winform分页控件(转)
自定义winform分页控件(转)
自定义winform分页控件(转)
自定义winform分页控件(转)ALTER PROCEDURE SP_Pagination
自定义winform分页控件(转)自定义winform分页控件(转)/**//*
自定义winform分页控件(转)***************************************************************
自定义winform分页控件(转)** 千万数量级分页存储过程 **
自定义winform分页控件(转)***************************************************************
自定义winform分页控件(转)参数说明:
自定义winform分页控件(转)1.Tables :表名称,视图
自定义winform分页控件(转)2.PrimaryKey :主关键字
自定义winform分页控件(转)3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
自定义winform分页控件(转)4.CurrentPage :当前页码
自定义winform分页控件(转)5.PageSize :分页尺寸
自定义winform分页控件(转)6.Filter :过滤语句,不带Where
自定义winform分页控件(转)7.Group :Group语句,不带Group By
自定义winform分页控件(转)效果演示:http://www.cn5135.com/_App/Enterprise/QueryResult.aspx
自定义winform分页控件(转)***************************************************************/
自定义winform分页控件(转)(
自定义winform分页控件(转)@Tables varchar(2000),
自定义winform分页控件(转)@PrimaryKey varchar(500),
自定义winform分页控件(转)@Sort varchar(500) = NULL,
自定义winform分页控件(转)@CurrentPage int = 1,
自定义winform分页控件(转)@PageSize int = 10,
自定义winform分页控件(转)@Fields varchar(2000) = '*',
自定义winform分页控件(转)@Filter varchar(1000) = NULL,
自定义winform分页控件(转)@Group varchar(1000) = NULL
自定义winform分页控件(转))
自定义winform分页控件(转)AS
自定义winform分页控件(转)自定义winform分页控件(转)/**//*默认排序*/
自定义winform分页控件(转)IF @Sort IS NULL OR @Sort = ''
自定义winform分页控件(转)SET @Sort = @PrimaryKey
自定义winform分页控件(转)DECLARE @SortTable varchar(1000)
自定义winform分页控件(转)DECLARE @SortName varchar(1000)
自定义winform分页控件(转)DECLARE @strSortColumn varchar(1000)
自定义winform分页控件(转)DECLARE @operator char(2)
自定义winform分页控件(转)DECLARE @type varchar(1000)
自定义winform分页控件(转)DECLARE @prec int
自定义winform分页控件(转)自定义winform分页控件(转)/**//*设定排序语句.*/
自定义winform分页控件(转)IF CHARINDEX('DESC',@Sort)>0
自定义winform分页控件(转)BEGIN
自定义winform分页控件(转)SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
自定义winform分页控件(转)SET @operator = '<='
自定义winform分页控件(转)END
自定义winform分页控件(转)ELSE
自定义winform分页控件(转)BEGIN
自定义winform分页控件(转)IF CHARINDEX('ASC', @Sort) = 0
自定义winform分页控件(转)SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
自定义winform分页控件(转)SET @operator = '>='
自定义winform分页控件(转)END
自定义winform分页控件(转)IF CHARINDEX('.', @strSortColumn) > 0
自定义winform分页控件(转)BEGIN
自定义winform分页控件(转)SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
自定义winform分页控件(转)SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
自定义winform分页控件(转)END
自定义winform分页控件(转)ELSE
自定义winform分页控件(转)BEGIN
自定义winform分页控件(转)SET @SortTable = @Tables
自定义winform分页控件(转)SET @SortName = @strSortColumn
自定义winform分页控件(转)END
自定义winform分页控件(转)SELECT @type=t.name, @prec=c.prec
自定义winform分页控件(转)FROM sysobjects o
自定义winform分页控件(转)JOIN syscolumns c on o.id=c.id
自定义winform分页控件(转)JOIN systypes t on c.xusertype=t.xusertype
自定义winform分页控件(转)WHERE o.name = @SortTable AND c.name = @SortName
自定义winform分页控件(转)IF CHARINDEX('char', @type) > 0
自定义winform分页控件(转)SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
自定义winform分页控件(转)DECLARE @strPageSize varchar(500)
自定义winform分页控件(转)DECLARE @strStartRow varchar(500)
自定义winform分页控件(转)DECLARE @strFilter varchar(1000)
自定义winform分页控件(转)DECLARE @strSimpleFilter varchar(1000)
自定义winform分页控件(转)DECLARE @strGroup varchar(1000)
自定义winform分页控件(转)自定义winform分页控件(转)/**//*默认当前页*/
自定义winform分页控件(转)IF @CurrentPage < 1
自定义winform分页控件(转)SET @CurrentPage = 1
自定义winform分页控件(转)自定义winform分页控件(转)/**//*设置分页参数.*/
自定义winform分页控件(转)SET @strPageSize = CAST(@PageSize AS varchar(500))
自定义winform分页控件(转)SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(500))
自定义winform分页控件(转)自定义winform分页控件(转)/**//*筛选以及分组语句.*/
自定义winform分页控件(转)IF @Filter IS NOT NULL AND @Filter != ''
自定义winform分页控件(转)BEGIN
自定义winform分页控件(转)SET @strFilter = ' WHERE ' + @Filter + ' '
自定义winform分页控件(转)SET @strSimpleFilter = ' AND ' + @Filter + ' '
自定义winform分页控件(转)END
自定义winform分页控件(转)ELSE
自定义winform分页控件(转)BEGIN
自定义winform分页控件(转)SET @strSimpleFilter = ''
自定义winform分页控件(转)SET @strFilter = ''
自定义winform分页控件(转)END
自定义winform分页控件(转)IF @Group IS NOT NULL AND @Group != ''
自定义winform分页控件(转)SET @strGroup = ' GROUP BY ' + @Group + ' '
自定义winform分页控件(转)ELSE
自定义winform分页控件(转)SET @strGroup = ''
自定义winform分页控件(转)自定义winform分页控件(转)/**//*执行查询语句*/
自定义winform分页控件(转)EXEC(
自定义winform分页控件(转)'
自定义winform分页控件(转)DECLARE @SortColumn ' + @type + '
自定义winform分页控件(转)SET ROWCOUNT ' + @strStartRow + '
自定义winform分页控件(转)SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
自定义winform分页控件(转)SET ROWCOUNT ' + @strPageSize + '
自定义winform分页控件(转)SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
自定义winform分页控件(转)'
自定义winform分页控件(转))
自定义winform分页控件(转)
自定义winform分页控件(转)
自定义winform分页控件(转)

使用该存储过陈,得到数据,将数据绑定到数据控件,提供了一个pageData类

自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 数据源提供
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public class PageData
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) private int _PageSize = 10;
自定义winform分页控件(转) private int _PageIndex = 1;
自定义winform分页控件(转) private int _PageCount = 0;
自定义winform分页控件(转) private int _TotalCount = 0;
自定义winform分页控件(转) private string _TableName;//表名
自定义winform分页控件(转) private string _QueryFieldName = "*";//表字段FieldStr
自定义winform分页控件(转) private string _OrderStr = string.Empty; //排序_SortStr
自定义winform分页控件(转) private string _QueryCondition = string.Empty;//查询的条件 RowFilter
自定义winform分页控件(转) private string _PrimaryKey = string.Empty;//主键
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 显示页数
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public int PageSize
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) get
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return _PageSize;
自定义winform分页控件(转)
自定义winform分页控件(转)            }
自定义winform分页控件(转) set
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _PageSize = value;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 当前页
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public int PageIndex
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) get
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return _PageIndex;
自定义winform分页控件(转)            }
自定义winform分页控件(转) set
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _PageIndex = value;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 总页数
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public int PageCount
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) get
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return _PageCount;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 总记录数
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public int TotalCount
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) get
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return _TotalCount;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 表名,包括视图
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public string TableName
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) get
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return _TableName;
自定义winform分页控件(转)            }
自定义winform分页控件(转) set
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _TableName = value;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 表字段FieldStr
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public string QueryFieldName
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) get
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return _QueryFieldName;
自定义winform分页控件(转)            }
自定义winform分页控件(转) set
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _QueryFieldName = value;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 排序字段
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public string OrderStr
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) get
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return _OrderStr;
自定义winform分页控件(转)            }
自定义winform分页控件(转) set
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _OrderStr = value;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 查询条件
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public string QueryCondition
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) get
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return _QueryCondition;
自定义winform分页控件(转)            }
自定义winform分页控件(转) set
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _QueryCondition = value;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转)自定义winform分页控件(转) /**//// <summary>
自定义winform分页控件(转) /// 主键
自定义winform分页控件(转) /// </summary>
自定义winform分页控件(转) public string PrimaryKey
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)自定义winform分页控件(转) get 自定义winform分页控件(转){
自定义winform分页控件(转) return _PrimaryKey;
自定义winform分页控件(转)            }
自定义winform分页控件(转)自定义winform分页控件(转) set 自定义winform分页控件(转){
自定义winform分页控件(转)                _PrimaryKey = value;
自定义winform分页控件(转)            }
自定义winform分页控件(转)        }
自定义winform分页控件(转) public DataSet QueryDataTable()
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)自定义winform分页控件(转)            SqlParameter[] parameters = 自定义winform分页控件(转){
自定义winform分页控件(转) new SqlParameter("@Tables", SqlDbType.VarChar, 255),
自定义winform分页控件(转) new SqlParameter("@PrimaryKey" , SqlDbType.VarChar , 255),   
自定义winform分页控件(转) new SqlParameter("@Sort", SqlDbType.VarChar , 255 ),
自定义winform分页控件(转) new SqlParameter("@CurrentPage", SqlDbType.Int),
自定义winform分页控件(转) new SqlParameter("@PageSize", SqlDbType.Int),                                   
自定义winform分页控件(转) new SqlParameter("@Fields", SqlDbType.VarChar, 255),
自定义winform分页控件(转) new SqlParameter("@Filter", SqlDbType.VarChar,1000),
自定义winform分页控件(转) new SqlParameter("@Group" ,SqlDbType.VarChar , 1000 )
自定义winform分页控件(转)                    };
自定义winform分页控件(转)            parameters[0].Value = _TableName;
自定义winform分页控件(转)            parameters[1].Value = _PrimaryKey;
自定义winform分页控件(转)            parameters[2].Value = _OrderStr;
自定义winform分页控件(转)            parameters[3].Value = PageIndex;
自定义winform分页控件(转)            parameters[4].Value = PageSize;
自定义winform分页控件(转)            parameters[5].Value =_QueryFieldName;
自定义winform分页控件(转)            parameters[6].Value = _QueryCondition;
自定义winform分页控件(转)            parameters[7].Value = string.Empty;
自定义winform分页控件(转)            DataSet ds = DbHelperSQL.RunProcedure("SP_Pagination", parameters, "dd");
自定义winform分页控件(转)            _TotalCount = GetTotalCount();
自定义winform分页控件(转) if (_TotalCount == 0)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _PageIndex = 0;
自定义winform分页控件(转)                _PageCount = 0;
自定义winform分页控件(转)            }
自定义winform分页控件(转) else
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                _PageCount = _TotalCount % _PageSize == 0 ? _TotalCount / _PageSize : _TotalCount / _PageSize + 1;
自定义winform分页控件(转) if (_PageIndex > _PageCount)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                    _PageIndex = _PageCount;
自定义winform分页控件(转)
自定义winform分页控件(转)                    parameters[4].Value = _PageSize;
自定义winform分页控件(转)
自定义winform分页控件(转)                    ds = QueryDataTable();
自定义winform分页控件(转)                }
自定义winform分页控件(转)            }
自定义winform分页控件(转) return ds;
自定义winform分页控件(转)        }
自定义winform分页控件(转)
自定义winform分页控件(转) public int GetTotalCount()
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) string strSql = " select count(1) from "+_TableName;
自定义winform分页控件(转) if (_QueryCondition != string.Empty)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)                strSql +=" where " + _QueryCondition;
自定义winform分页控件(转)            }
自定义winform分页控件(转) return int.Parse(DbHelperSQL.GetSingle(strSql).ToString());
自定义winform分页控件(转)        }
自定义winform分页控件(转)    }

好了,在页面放个DATAGRIDVIEW 拖入控件pager

自定义winform分页控件(转) private void ReceiveOrderJLForm_Load(object sender, EventArgs e)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) this.pager1.PageCurrent = 1;
自定义winform分页控件(转) this.pager1.Bind();
自定义winform分页控件(转)        }
自定义winform分页控件(转) private int dgvBind()
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转)            WindowsApp.MyControl.PageData pageData = new WindowsApp.MyControl.PageData();
自定义winform分页控件(转)            pageData.TableName = "T_ReceiveOrder";
自定义winform分页控件(转)            pageData.PrimaryKey = "ReceiveOrderID";
自定义winform分页控件(转)            pageData.OrderStr = "ReceiveOrderID desc";
自定义winform分页控件(转)            pageData.PageIndex = this.pager1.PageCurrent;
自定义winform分页控件(转)            pageData.PageSize = this.pager1.PageSize;
自定义winform分页控件(转)            pageData.QueryCondition = _strSql + strWhere.ToString();
自定义winform分页控件(转)            pageData.QueryFieldName = "*";
自定义winform分页控件(转)
自定义winform分页控件(转) this.pager1.bindingSource.DataSource = pageData.QueryDataTable().Tables[0];
自定义winform分页控件(转) this.pager1.bindingNavigator.BindingSource = pager1.bindingSource;
自定义winform分页控件(转)            dgvReceiveOrder.AutoGenerateColumns = false;
自定义winform分页控件(转)            dgvReceiveOrder.DataSource = this.pager1.bindingSource;
自定义winform分页控件(转) return pageData.TotalCount;
自定义winform分页控件(转)        }
自定义winform分页控件(转) private int pager1_EventPaging(WindowsApp.MyControl.EventPagingArg e)
自定义winform分页控件(转)自定义winform分页控件(转)自定义winform分页控件(转){
自定义winform分页控件(转) return dgvBind();
自定义winform分页控件(转)        }

效果如下

自定义winform分页控件(转)

===========

很多朋友根据原文的方法编写代码后,出现了“不到BindingSource属性”的问题。

该问题的解决方法:

将bindingSource和bindingNavigator的Modifiers属性设置为public即可。

相关文章: