winfrom项目中dvg控件的翻页显示

首先编写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());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值