首先编写Pages翻页类
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nine_zyxm
{
class Pages
{
public static DataTable MiddleData = new DataTable();
///
/// 每页记录数
///
public static int pageSize = 0;
///
/// 总记录数
///
public static int recordCount = 0;
///
/// 总页数
///
public static int pageCount = 0;
///
/// 当前页数
///
public static int currentPage = 0;
public static int[] PageSorter(DataTable dataTable)
{
//总记录数
recordCount = dataTable.Rows.Count;
//总页数
pageCount = recordCount / pageSize;
if (recordCount % pageSize > 0)
{
pageCount++;
}
currentPage = 1;
return LoadPage(dataTable);
}
public static int[] LoadPage(DataTable dataTable)
{
int[] sum = new int[2];
//当页面小于一时,当前页面为一
if (currentPage < 1)
{
currentPage = 1;
}
//当前页面大于总数页面时,当前页面等于总页面
if (currentPage > pageCount)
{
currentPage = pageCount;
}
//开始指针
int beginRecord;
//结束指针
int endRecord;
DataTable dtTemp;
//克隆DataTable的结构,包括所有DataTable架构的约束
dtTemp = dataTable.Clone();
beginRecord = pageSize * (currentPage - 1);
if (currentPage == 1)
{
beginRecord = 0;
}
endRecord = pageSize * currentPage;
if (currentPage == pageCount)
{
endRecord = recordCount;
}
for (int i = beginRecord; i < endRecord; i++)
{
//dataTable.Rows[i]复制到dtTemp中,保留任何属性设置以及初始值和当前值
dtTemp.ImportRow(dataTable.Rows[i]);
}
FliOverData = dtTemp;
sum[0] = currentPage;
sum[1] = pageCount;
return sum;
}
/// <summary>
/// 记录翻页时用到的数据
/// </summary>
public static DataTable FliOverData { get; set; }
}
}
在窗体中先声明数组接受返回值
int[] arrs = new int[2];
在窗体中编写一个类
private void Mains(object sender, EventArgs e)
{
string newtime = DateTime.Now.ToString();//获取当时时间
Pages.MiddleData = DBHelper.GetDataTable(string.Format(查询语句));//数据展示
if (Pages.MiddleData.Rows.Count > 0)
{
//用数组接收Pages类的返回值
arrs=Pages.PageSorter(Pages.MiddleData);
//赋值控件值
现阶段页码= arrs[0].ToString();
全部页码 = arrs[1].ToString();
}
else
{
Pages.FliOverData = null;
}
//防止dvg控件自动生成列
dvg控件名.AutoGenerateColumns = false;
//数据展示
dvg控件名.DataSource = Pages.FliOverData;
}
在窗体加载事件中传值
Pages.pageSize = (this.dvg控件名.Height / this.dvg控件名.ColumnHeadersHeight) - 2;//自动获取生成翻页时每页的行数,并传值
按键代码
//点击首页按钮
private void bthome_page_Click(object sender, EventArgs e)
{
if (Pages.currentPage == 1)
{
return;
}
Pages.currentPage = 1;
if (Pages.MiddleData.Rows.Count > 0)
{
arrs=Pages.LoadPage(Pages.MiddleData);
点当前页码.Text = arrs[0].ToString();
总页码.Text = arrs[1].ToString();
}
dvg_Salary.DataSource = Pages.FliOverData;
}
//点击上一页按钮
private void bt_previous_Click(object sender, EventArgs e)
{
if (Pages.currentPage == 1)
{
return;
}
Pages.currentPage--;
if (Pages.MiddleData.Rows.Count > 0)
{
arrs = Pages.LoadPage(Pages.MiddleData);
当前页码Text = arrs[0].ToString();
总页码.Text = arrs[1].ToString();
}
dvg_Salary.DataSource = Pages.FliOverData;
}
//点击下一页按钮
private void bt_next_Click(object sender, EventArgs e)
{
if (Pages.currentPage == Pages.pageCount)
{
return;
}
Pages.currentPage++;
if (Pages.MiddleData.Rows.Count > 0)
{
arrs = Pages.LoadPage(Pages.MiddleData);
当前页码Text = arrs[0].ToString();
总页码.Text = arrs[1].ToString();
}
dvg_Salary.DataSource = Pages.FliOverData;
}
//点击尾页按钮
private void bt_back_Click(object sender, EventArgs e)
{
if (Pages.currentPage == Pages.pageCount)
{
return;
}
Pages.currentPage = Pages.pageCount;
if (Pages.MiddleData.Rows.Count > 0)
{
arrs = Pages.LoadPage(Pages.MiddleData);
当前页码.Text = arrs[0].ToString();
总页码Text = arrs[1].ToString();
}
dvg_Salary.DataSource = Pages.FliOverData;
}
方法的调用
this.Mains(new object(), new EventArgs());