[转帖]datagridview 分页

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        int pageSize = 0;
        int maxRec = 0;
        int pageCount = 0;
        int currentPage = 0;
        int recNo = 0;
        DataSet ds = new DataSet();
        DataTable dtSource = new DataTable();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/My Documents/Visual Studio 2005/Projects/WindowsApplication1/WindowsApplication1/表.mdb";//连接数据库
            OleDbConnection conn = new OleDbConnection(strconn);
            conn.Open();
            OleDbDataAdapter sda = new OleDbDataAdapter("select * from Area", conn);//这里就随便取一数据了
            sda.Fill(ds, "ds");
            conn.Close();
            dtSource = ds.Tables[0];
            getFillDateset();
        }

        #region 数据处理
        /// <summary>
        /// 得到期初数据
        /// </summary>
        private void getFillDateset()
        {
            try
            {
                //每页显示数
                pageSize = 10;
                //得到最大记录数
                maxRec = dtSource.Rows.Count;
                //共有多少页
                pageCount = (maxRec / pageSize);
                //取余数
                if ((maxRec % pageSize) > 0)
                {
                    pageCount++;
                }
                //默认第一页
                currentPage = 1;
                recNo = 0;
                LoadPage();
            }
            catch
            {
            }
        }

        /// <summary>
        /// 判断是否数据已经加载
        /// </summary>
        /// <returns></returns>
        private bool CheckFillButton()
        {
            if (pageSize == 0) return false;
            else return true;
        }

        /// <summary>
        /// 取DataTable的数据
        /// </summary>
        private void LoadPage()
        {
            int startRec;
            int endRec;
            DataTable dtTemp;


            dtTemp = dtSource.Clone();
            if (currentPage == pageCount) endRec = maxRec;
            else endRec = pageSize * currentPage;
            startRec = recNo;
            for (int i = startRec; i < endRec; i++)
            {
                dtTemp.ImportRow(dtSource.Rows[i]);
                recNo++;
            }
            this.dataGridView1.DataSource = dtTemp;
        }

        private void changepage(int m)
        {
            switch (m)
            {
                case 1:
                    if (currentPage == 1)
                    {
                        MessageBox.Show("已经第一页了");
                        return;

                    }
                    currentPage = 1;
                    recNo = 0;
                    LoadPage();
                    break;
                case 2:
                    currentPage++;
                    if (currentPage > pageCount)
                    {
                        currentPage = pageCount;
                        if (recNo == maxRec)
                        {
                            MessageBox.Show("已经最后一页了");
                            return;
                        }
                        else
                            recNo = pageSize * (currentPage + 1);
                    }
                    LoadPage();
                    break;
                case 3:
                    if (currentPage == pageCount)
                        recNo = pageSize * (currentPage - 2);
                    currentPage--;
                    if (currentPage < 1)
                    {
                        MessageBox.Show("已经第一页了");
                        currentPage = 1;
                        return;
                    }
                    else
                        recNo = pageSize * (currentPage - 1);

                    LoadPage();
                    break;

                case 4:
                    if (!CheckFillButton()) return;
                    if (recNo == maxRec)
                    {
                        MessageBox.Show("已经最后一页了");
                        return;
                    }
                    currentPage = pageCount;
                    recNo = pageSize * (currentPage - 1);
                    LoadPage();
                    break;
            }
        }
        #endregion

        private void button1_Click(object sender, EventArgs e)
        {
            changepage(1);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            changepage(2);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            changepage(3);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            changepage(4);
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值