标签:ext auto nta current rap ase 根据 code oid
1、分页整体显示如下:
主要包括功能如下:
1)显示总页数、当前页数
2)向前,向后翻页功能
3)显示首页,显示最后一页功能
4)自定义跳转页面功能
2、页面设计部分(.Designer.cs文件):
partial class DGVPager
{
///
/// 必需的设计器变量。
///
private System.ComponentModel.IContainer components = null;
///
/// 清理所有正在使用的资源。
///
/// 如果应释放托管资源,为 true;否则为 false。
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
///
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
///
private void InitializeComponent()
{
this.label5 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.linkLast = new System.Windows.Forms.Button();
this.linkFirst = new System.Windows.Forms.Button();
this.linkPrevious = new System.Windows.Forms.Button();
this.linkNext = new System.Windows.Forms.Button();
this.lblPageCount = new System.Windows.Forms.Label();
this.lblSept = new System.Windows.Forms.Label();
this.lblTotalCount = new System.Windows.Forms.Label();
this.lblCurrentPage = new System.Windows.Forms.Label();
this.btnGo = new System.Windows.Forms.Button();
this.txtPageNum = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("幼圆", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(196, 6);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(49, 14);
this.label5.TabIndex = 264;
this.label5.Text = "条记录";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("幼圆", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(1, 6);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(63, 14);
this.label3.TabIndex = 263;
this.label3.Text = "当前页:";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("幼圆", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(145, 6);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(21, 14);
this.label1.TabIndex = 261;
this.label1.Text = "共";
//
// linkLast
//
this.linkLast.Font = new System.Drawing.Font("幼圆", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.linkLast.Location = new System.Drawing.Point(410, 1);
this.linkLast.Name = "linkLast";
this.linkLast.Size = new System.Drawing.Size(44, 23);
this.linkLast.TabIndex = 260;
this.linkLast.Text = ">>|";
this.linkLast.UseVisualStyleBackColor = true;
this.linkLast.Click += new System.EventHandler(this.linkLast_Click);
//
// linkFirst
//
this.linkFirst.Font = new System.Drawing.Font("幼圆", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.linkFirst.Location = new System.Drawing.Point(255, 1);
this.linkFirst.Name = "linkFirst";
this.linkFirst.Size = new System.Drawing.Size(44, 23);
this.linkFirst.TabIndex = 259;
this.linkFirst.Text = "|";
this.linkFirst.UseVisualStyleBackColor = true;
this.linkFirst.Click += new System.EventHandler(this.linkFirst_Click);
//
// linkPrevious
//
this.linkPrevious.Font = new System.Drawing.Font("幼圆", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.linkPrevious.Location = new System.Drawing.Point(312, 1);
this.linkPrevious.Name = "linkPrevious";
this.linkPrevious.Size = new System.Drawing.Size(34, 23);
this.linkPrevious.TabIndex = 258;
this.linkPrevious.Text = "";
this.linkPrevious.UseVisualStyleBackColor = true;
this.linkPrevious.ClientSizeChanged += new System.EventHandler(this.linkPrevious_Click);
this.linkPrevious.Click += new System.EventHandler(this.linkPrevious_Click);
//
// linkNext
//
this.linkNext.Font = new System.Drawing.Font("幼圆", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.linkNext.Location = new System.Drawing.Point(361, 1);
this.linkNext.Name = "linkNext";
this.linkNext.Size = new System.Drawing.Size(34, 23);
this.linkNext.TabIndex = 257;
this.linkNext.Text = ">";
this.linkNext.UseVisualStyleBackColor = true;
this.linkNext.Click += new System.EventHandler(this.linkNext_Click);
//
// lblPageCount
//
this.lblPageCount.AutoSize = true;
this.lblPageCount.ForeColor = System.Drawing.Color.Red;
this.lblPageCount.Location = new System.Drawing.Point(108, 7);
this.lblPageCount.Name = "lblPageCount";
this.lblPageCount.Size = new System.Drawing.Size(11, 12);
this.lblPageCount.TabIndex = 256;
this.lblPageCount.Text = "1";
//
// lblSept
//
this.lblSept.AutoSize = true;
this.lblSept.Location = new System.Drawing.Point(91, 8);
this.lblSept.Name = "lblSept";
this.lblSept.Size = new System.Drawing.Size(11, 12);
this.lblSept.TabIndex = 255;
this.lblSept.Text = "/";
//
// lblTotalCount
//
this.lblTotalCount.AutoSize = true;
this.lblTotalCount.ForeColor = System.Drawing.Color.Red;
this.lblTotalCount.Location = new System.Drawing.Point(168, 7);
this.lblTotalCount.Name = "lblTotalCount";
this.lblTotalCount.Size = new System.Drawing.Size(23, 12);
this.lblTotalCount.TabIndex = 254;
this.lblTotalCount.Text = "100";
//
// lblCurrentPage
//
this.lblCurrentPage.AutoSize = true;
this.lblCurrentPage.ForeColor = System.Drawing.Color.Red;
this.lblCurrentPage.Location = new System.Drawing.Point(74, 7);
this.lblCurrentPage.Name = "lblCurrentPage";
this.lblCurrentPage.Size = new System.Drawing.Size(11, 12);
this.lblCurrentPage.TabIndex = 253;
this.lblCurrentPage.Text = "1";
//
// btnGo
//
this.btnGo.BackColor = System.Drawing.Color.Transparent;
this.btnGo.ForeColor = System.Drawing.Color.Black;
this.btnGo.Location = new System.Drawing.Point(500, 1);
this.btnGo.Name = "btnGo";
this.btnGo.Size = new System.Drawing.Size(45, 23);
this.btnGo.TabIndex = 252;
this.btnGo.Text = "跳转";
this.btnGo.UseVisualStyleBackColor = false;
this.btnGo.Click += new System.EventHandler(this.btnGo_Click);
//
// txtPageNum
//
this.txtPageNum.Location = new System.Drawing.Point(465, 2);
this.txtPageNum.Name = "txtPageNum";
this.txtPageNum.Size = new System.Drawing.Size(29, 21);
this.txtPageNum.TabIndex = 251;
this.txtPageNum.TextChanged += new System.EventHandler(this.txtPageNum_TextChanged);
this.txtPageNum.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtPageNum_KeyPress);
//
// DGVPager
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label5);
this.Controls.Add(this.label3);
this.Controls.Add(this.label1);
this.Controls.Add(this.linkLast);
this.Controls.Add(this.linkFirst);
this.Controls.Add(this.linkPrevious);
this.Controls.Add(this.linkNext);
this.Controls.Add(this.lblPageCount);
this.Controls.Add(this.lblSept);
this.Controls.Add(this.lblTotalCount);
this.Controls.Add(this.lblCurrentPage);
this.Controls.Add(this.btnGo);
this.Controls.Add(this.txtPageNum);
this.Name = "DGVPager";
this.Size = new System.Drawing.Size(547, 25);
this.Load += new System.EventHandler(this.DGVPager_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button linkLast;
private System.Windows.Forms.Button linkFirst;
private System.Windows.Forms.Button linkPrevious;
private System.Windows.Forms.Button linkNext;
private System.Windows.Forms.Label lblPageCount;
private System.Windows.Forms.Label lblSept;
private System.Windows.Forms.Label lblTotalCount;
private System.Windows.Forms.Label lblCurrentPage;
private System.Windows.Forms.Button btnGo;
private System.Windows.Forms.TextBox txtPageNum;
}
3、代码功能部分:
public partial class DGVPager : UserControl
{
public DGVPager()
{
InitializeComponent();
}
#region 分页字段和属性
private int pageIndex = 1;
///
/// 当前页数
///
public virtual int PageIndex
{
get { return pageIndex; }
set { pageIndex = value; }
}
private int pageSize = 20;
///
/// 每页记录数
///
public virtual int PageSize
{
get { return pageSize; }
set { pageSize = value; }
}
private int recordCount = 0;
///
/// 总记录数
///
public virtual int RecordCount
{
get { return recordCount; }
set { recordCount = value; }
}
private int pageCount = 0;
///
/// 总页数
///
public int PageCount
{
get
{
if (pageSize != 0)
{
pageCount = GetPageCount();
}
return pageCount;
}
}
#endregion
#region 页码变化时触发事件
public event EventHandler OnPageChanged;
#endregion
#region 分页及相关事件功能实现
///
/// 设窗体控件全部可用
///
private void SetFormCtrEnabled()
{
linkFirst.Enabled = true;
linkPrevious.Enabled = true;
linkNext.Enabled = true;
linkLast.Enabled = true;
btnGo.Enabled = true;
}
///
/// 计算总页数
///
///
private int GetPageCount()
{
if (PageSize == 0)
{
return 0;
}
int pageCount = RecordCount / PageSize;
if (RecordCount % PageSize == 0)
{
pageCount = RecordCount / PageSize;
}
else
{
pageCount = RecordCount / PageSize + 1;
}
return pageCount;
}
///
/// 用于客户端调用
///
public void DrawControl(int count)
{
recordCount = count;
DrawControl(false);
}
///
/// 根据不同的条件,改变页面控件的呈现状态
///
private void DrawControl(bool callEvent)
{
lblCurrentPage.Text = PageIndex.ToString();
lblPageCount.Text = PageCount.ToString();
lblTotalCount.Text = RecordCount.ToString();
if (callEvent && OnPageChanged != null)
{
OnPageChanged(this, null);//当前分页数字改变时,触发委托事件
}
SetFormCtrEnabled();
if (PageCount == 1 || PageCount == 0)//有且仅有一页时
{
linkFirst.Enabled = false;
linkPrevious.Enabled = false;
linkNext.Enabled = false;
linkLast.Enabled = false;
btnGo.Enabled = false;
}
else if (PageIndex == 1)//当前页为第一页时
{
linkFirst.Enabled = false;
linkPrevious.Enabled = false;
}
else if (PageIndex == PageCount)//当前页为最后一页时
{
linkNext.Enabled = false;
linkLast.Enabled = false;
}
}
#endregion
#region 相关控件事件
//首页按钮
private void linkFirst_Click(object sender, EventArgs e)
{
PageIndex = 1;
DrawControl(true);
}
//上一页按钮
private void linkPrevious_Click(object sender, EventArgs e)
{
PageIndex = Math.Max(1, PageIndex - 1);
DrawControl(true);
}
//下一页按钮
private void linkNext_Click(object sender, EventArgs e)
{
PageIndex = Math.Min(PageCount, PageIndex + 1);
DrawControl(true);
}
//尾页按钮
private void linkLast_Click(object sender, EventArgs e)
{
PageIndex = PageCount;
DrawControl(true);
}
///
/// 按下enter键,执行跳转页面功能
///
private void txtPageNum_KeyPress(object sender, KeyPressEventArgs e)
{
btnGo_Click(null, null);
}
///
/// 跳转页数限制
///
private void txtPageNum_TextChanged(object sender, EventArgs e)
{
int num = 0;
if (int.TryParse(txtPageNum.Text.Trim(), out num) && num > 0)
{ //TryParse 函数,将字符串转换成等效的整数,返回bool型,判断是否转换成功。
//输入除数字以外的字符是转换不成功的
if (num > PageCount) //输入数量大于最大页数时,文本框自动显示最大页数
{
txtPageNum.Text = PageCount.ToString();
}
}
}
///
/// 跳转按钮
///
///
///
private void btnGo_Click(object sender, EventArgs e)
{
int num = 0;
if (int.TryParse(txtPageNum.Text.Trim(), out num) && num > 0)
{
PageIndex = num;
DrawControl(true);
}
}
#endregion
bool isTextChanged = false;
///
/// 光标离开 每页设置文本框时,显示到首页
private void txtPageSize_Leave(object sender, EventArgs e)
{
if (isTextChanged)
{
isTextChanged = false;
linkFirst_Click(null, null);
}
}
private void DGVPager_Load(object sender, EventArgs e)
{
}
}
4、DGVPager类的使用:
int pagePTR = 0;//设置Page标志位
【C#】DataGridView的分页功能
标签:ext auto nta current rap ase 根据 code oid
原文地址:https://www.cnblogs.com/haizhibin1989/p/10229886.html