1.图列展示
2.分页控件代码
Paging.Designer.cs
partial class Paging { /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源。 /// </summary> /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region 组件设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Paging)); this.bindingNavigator = new System.Windows.Forms.BindingNavigator(this.components); this.btnFirst = new System.Windows.Forms.ToolStripButton(); this.btnPrev = new System.Windows.Forms.ToolStripButton(); this.btnNext = new System.Windows.Forms.ToolStripButton(); this.btnLast = new System.Windows.Forms.ToolStripButton(); this.toolStripLabel6 = new System.Windows.Forms.ToolStripLabel(); this.toolStripLabel4 = new System.Windows.Forms.ToolStripLabel(); this.txtCurrentPage = new System.Windows.Forms.ToolStripTextBox(); this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); this.btnGo = new System.Windows.Forms.ToolStripButton(); this.toolStripLabel5 = new System.Windows.Forms.ToolStripLabel(); this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel(); this.lblPageCount = new System.Windows.Forms.ToolStripLabel(); this.toolStripLabel3 = new System.Windows.Forms.ToolStripLabel(); this.lblMaxPage = new System.Windows.Forms.ToolStripLabel(); ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator)).BeginInit(); this.bindingNavigator.SuspendLayout(); this.SuspendLayout(); // // bindingNavigator // this.bindingNavigator.AddNewItem = null; this.bindingNavigator.CountItem = null; this.bindingNavigator.DeleteItem = null; this.bindingNavigator.Dock = System.Windows.Forms.DockStyle.Bottom; this.bindingNavigator.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.btnFirst, this.btnPrev, this.btnNext, this.btnLast, this.toolStripLabel6, this.toolStripLabel4, this.txtCurrentPage, this.toolStripLabel1, this.btnGo, this.toolStripLabel5, this.toolStripLabel2, this.lblPageCount, this.toolStripLabel3, this.lblMaxPage}); this.bindingNavigator.Location = new System.Drawing.Point(0, 3); this.bindingNavigator.MoveFirstItem = null; this.bindingNavigator.MoveLastItem = null; this.bindingNavigator.MoveNextItem = null; this.bindingNavigator.MovePreviousItem = null; this.bindingNavigator.Name = "bindingNavigator"; this.bindingNavigator.PositionItem = null; this.bindingNavigator.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; this.bindingNavigator.Size = new System.Drawing.Size(713, 25); this.bindingNavigator.TabIndex = 2; this.bindingNavigator.Text = "bindingNavigator1"; // // btnFirst // this.btnFirst.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.btnFirst.Image = ((System.Drawing.Image)(resources.GetObject("btnFirst.Image"))); this.btnFirst.ImageTransparentColor = System.Drawing.Color.Magenta; this.btnFirst.Name = "btnFirst"; this.btnFirst.Size = new System.Drawing.Size(36, 22); this.btnFirst.Text = "首页"; this.btnFirst.Click += new System.EventHandler(this.btnFirst_Click); // // btnPrev // this.btnPrev.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.btnPrev.Image = ((System.Drawing.Image)(resources.GetObject("btnPrev.Image"))); this.btnPrev.ImageTransparentColor = System.Drawing.Color.Magenta; this.btnPrev.Name = "btnPrev"; this.btnPrev.Size = new System.Drawing.Size(36, 22); this.btnPrev.Text = "上页"; this.btnPrev.Click += new System.EventHandler(this.btnPrev_Click); // // btnNext // this.btnNext.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.btnNext.Image = ((System.Drawing.Image)(resources.GetObject("btnNext.Image"))); this.btnNext.ImageTransparentColor = System.Drawing.Color.Magenta; this.btnNext.Name = "btnNext"; this.btnNext.Size = new System.Drawing.Size(36, 22); this.btnNext.Text = "下页"; this.btnNext.Click += new System.EventHandler(this.btnNext_Click); // // btnLast // this.btnLast.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.btnLast.Image = ((System.Drawing.Image)(resources.GetObject("btnLast.Image"))); this.btnLast.ImageTransparentColor = System.Drawing.Color.Magenta; this.btnLast.Name = "btnLast"; this.btnLast.Size = new System.Drawing.Size(36, 22); this.btnLast.Text = "未页"; this.btnLast.Click += new System.EventHandler(this.btnLast_Click); // // toolStripLabel6 // this.toolStripLabel6.Name = "toolStripLabel6"; this.toolStripLabel6.Size = new System.Drawing.Size(28, 22); this.toolStripLabel6.Text = " "; // // toolStripLabel4 // this.toolStripLabel4.Name = "toolStripLabel4"; this.toolStripLabel4.Size = new System.Drawing.Size(20, 22); this.toolStripLabel4.Text = "第"; // // txtCurrentPage // this.txtCurrentPage.Name = "txtCurrentPage"; this.txtCurrentPage.Size = new System.Drawing.Size(40, 25); // // toolStripLabel1 // this.toolStripLabel1.Name = "toolStripLabel1"; this.toolStripLabel1.Size = new System.Drawing.Size(20, 22); this.toolStripLabel1.Text = "页"; // // btnGo // this.btnGo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.btnGo.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold); this.btnGo.Image = ((System.Drawing.Image)(resources.GetObject("btnGo.Image"))); this.btnGo.ImageTransparentColor = System.Drawing.Color.Magenta; this.btnGo.Name = "btnGo"; this.btnGo.Size = new System.Drawing.Size(23, 22); this.btnGo.Text = "GO"; this.btnGo.Click += new System.EventHandler(this.btnGo_Click); // // toolStripLabel5 // this.toolStripLabel5.Name = "toolStripLabel5"; this.toolStripLabel5.Size = new System.Drawing.Size(28, 22); this.toolStripLabel5.Text = " "; // // toolStripLabel2 // this.toolStripLabel2.Name = "toolStripLabel2"; this.toolStripLabel2.Size = new System.Drawing.Size(20, 22); this.toolStripLabel2.Text = "共"; // // lblPageCount // this.lblPageCount.Name = "lblPageCount"; this.lblPageCount.Size = new System.Drawing.Size(85, 22); this.lblPageCount.Text = "lblPageCount"; // // toolStripLabel3 // this.toolStripLabel3.Name = "toolStripLabel3"; this.toolStripLabel3.Size = new System.Drawing.Size(20, 22); this.toolStripLabel3.Text = "页"; // // lblMaxPage // this.lblMaxPage.Name = "lblMaxPage"; this.lblMaxPage.Size = new System.Drawing.Size(76, 22); this.lblMaxPage.Text = "lblMaxPage"; // // Paging // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.bindingNavigator); this.Name = "Paging"; this.Size = new System.Drawing.Size(713, 28); ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator)).EndInit(); this.bindingNavigator.ResumeLayout(false); this.bindingNavigator.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion public System.Windows.Forms.BindingNavigator bindingNavigator; private System.Windows.Forms.ToolStripButton btnFirst; private System.Windows.Forms.ToolStripButton btnPrev; private System.Windows.Forms.ToolStripButton btnNext; private System.Windows.Forms.ToolStripButton btnLast; private System.Windows.Forms.ToolStripLabel toolStripLabel6; private System.Windows.Forms.ToolStripLabel toolStripLabel4; private System.Windows.Forms.ToolStripTextBox txtCurrentPage; private System.Windows.Forms.ToolStripLabel toolStripLabel1; private System.Windows.Forms.ToolStripButton btnGo; private System.Windows.Forms.ToolStripLabel toolStripLabel5; private System.Windows.Forms.ToolStripLabel toolStripLabel2; private System.Windows.Forms.ToolStripLabel lblPageCount; private System.Windows.Forms.ToolStripLabel toolStripLabel3; private System.Windows.Forms.ToolStripLabel lblMaxPage; }
Paging.cs
/// <summary> /// 申明委托 /// </summary> /// <param name="e"></param> /// <returns></returns> public delegate int EventPagingHandler(EventPagingArg e); public partial class Paging : UserControl { public Paging() { InitializeComponent(); } public event EventPagingHandler EventPaging; /// <summary> /// 每页显示记录数 /// </summary> private int _pageSize = 20; /// <summary> /// 每页显示记录数 /// </summary> public int PageSize { get { return _pageSize; } set { _pageSize = value; GetPageCount(); } } private int _nMax = 0; /// <summary> /// 总记录数 /// </summary> public int NMax { get { return _nMax; } set { _nMax = value; GetPageCount(); } } private int _pageCount = 0; /// <summary> /// 页数=总记录数/每页显示记录数 /// </summary> public int PageCount { get { return _pageCount; } set { _pageCount = value; } } private int _pageCurrent = 0; /// <summary> /// 当前页号 /// </summary> public int PageCurrent { get { return _pageCurrent; } set { _pageCurrent = value; } } private DataTable _dataSource; /// <summary> /// 数据源 /// </summary> public DataTable DataSource { get { return _dataSource; } set { _dataSource = value; } } public BindingNavigator ToolBar { get { return this.bindingNavigator; } } private void GetPageCount() { if (this.NMax > 0) { this.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(this.NMax) / Convert.ToDouble(this.PageSize))); } else { this.PageCount = 0; } } /// <summary> /// 翻页控件数据绑定的方法 /// </summary> public void Bind() { if (this.EventPaging != null) { this.NMax = this.EventPaging(new EventPagingArg(this.PageCurrent)); } if (this.PageCurrent > this.PageCount) { this.PageCurrent = this.PageCount; } if (this.PageCount == 1) { this.PageCurrent = 1; } lblPageCount.Text = this.PageCount.ToString(); this.lblMaxPage.Text = "共" + this.NMax.ToString() + "条记录"; this.txtCurrentPage.Text = this.PageCurrent.ToString(); if (this.PageCurrent == 1) { this.btnPrev.Enabled = false; this.btnFirst.Enabled = false; } else { btnPrev.Enabled = true; btnFirst.Enabled = true; } if (this.PageCurrent == this.PageCount) { this.btnLast.Enabled = false; this.btnNext.Enabled = false; } else { btnLast.Enabled = true; btnNext.Enabled = true; } if (this.NMax == 0) { btnNext.Enabled = false; btnLast.Enabled = false; btnFirst.Enabled = false; btnPrev.Enabled = false; } } private void btnFirst_Click(object sender, EventArgs e) { PageCurrent = 1; this.Bind(); } private void btnPrev_Click(object sender, EventArgs e) { PageCurrent -= 1; if (PageCurrent <= 0) { PageCurrent = 1; } this.Bind(); } private void btnNext_Click(object sender, EventArgs e) { this.PageCurrent += 1; if (PageCurrent > PageCount) { PageCurrent = PageCount; } this.Bind(); } private void btnLast_Click(object sender, EventArgs e) { PageCurrent = PageCount; this.Bind(); } private void btnGo_Click(object sender, EventArgs e) { if (this.txtCurrentPage.Text != null && txtCurrentPage.Text != "") { if (Int32.TryParse(txtCurrentPage.Text, out _pageCurrent)) { this.Bind(); } else { MessageBox.Show("输入数字格式错误!"); } } } private void txtCurrentPage_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { this.Bind(); } } } /// <summary> /// 自定义事件数据基类 /// </summary> public class EventPagingArg : EventArgs { private int _intPageIndex; public EventPagingArg(int PageIndex) { _intPageIndex = PageIndex; } }
使用:
PagingHelper
class PagingHelper { private int _PageSize = 10; private int _PageIndex = 1; private int _TotalCount = 0; private string _TableName;//表名 private string _QueryFieldName = "*";//表字段FieldStr private string _OrderStr = string.Empty; //排序_SortStr private string _QueryCondition = string.Empty;//查询的条件 RowFilter private string _PrimaryKey = string.Empty;//主键 /// <summary> /// 显示页数 /// </summary> public int PageSize { get { return _PageSize; } set { _PageSize = value; } } /// <summary> /// 当前页 /// </summary> public int PageIndex { get { return _PageIndex; } set { _PageIndex = value; } } /// <summary> /// 总记录数 /// </summary> public int TotalCount { get { return _TotalCount; } } /// <summary> /// 表名,包括视图 /// </summary> public string TableName { get { return _TableName; } set { _TableName = value; } } /// <summary> /// 表字段FieldStr /// </summary> public string QueryFieldName { get { return _QueryFieldName; } set { _QueryFieldName = value; } } /// <summary> /// 排序字段 /// </summary> public string OrderStr { get { return _OrderStr; } set { _OrderStr = value; } } public DataTable QueryDataTable() { //这里调用存储过程实现数据读取 //展示就用本地测试数据 DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(string)); _TotalCount = 101; int index = PageIndex == 1 ? 1 : PageIndex * PageSize; for (int i = index; i < index+PageSize; i++) { dt.Rows.Add(i, "Name" + i.ToString()); } dt.AcceptChanges(); return dt; } }
测试页面调用:
private void Form1_Load(object sender, EventArgs e) { this.paging1.PageCurrent = 1; this.paging1.Bind(); } private int paging1_EventPaging(EventPagingArg e) { return Bind(this.paging1.PageCurrent); } private int Bind(int pagecurrent) { PagingHelper phelper = new PagingHelper(); phelper.PageIndex = pagecurrent; paging1.PageSize = 20; DataTable dt = phelper.QueryDataTable(); this.dataGridView1.DataSource = dt.DefaultView; return phelper.TotalCount; }