c#2005 datagridview 分页

 

 

准备:  datagridview    1            textbox          1

            linklabel          4       numericUpDown  1

 

步骤1  定义分页数据:

 

        int pageSize = 0;     //每页显示行数
        int nMax = 0;         //总记录数
        int pageCount = 0;    //页数=总记录数/每页显示行数
        int pageCurrent = 0;   //当前页号
        int nCurrent = 0;      //当前记录行
        DataTable dtTemp = new DataTable();

        DataSet ds=new DataSet();

        int page1 = 0;

 

步骤2  得到数据集ds

  

        ds  //这里不详细写    

        InitDataSet(); //调用方法

        this.numericUpDown1.Value = 1;

 

步骤3   InitDataSet()方法

    private void InitDataSet()
        {
            pageSize = 30;      //设置页面行数
            nMax = ds.Tables[0].Rows.Count;

            pageCount = (nMax / pageSize);    //计算出总页数

            if ((nMax % pageSize) > 0) pageCount++;

            pageCurrent = 1;    //当前页数从1开始
            nCurrent = 0;       //当前记录数从0开始

            LoadData();

            //显示共几页
            this.textBox1.Text = pageCount.ToString();
        }

 

步骤4  LoadData()方法

 private void LoadData()
        {
            int nStartPos = 0;   //当前页面开始记录行
            int nEndPos = 0;     //当前页面结束记录行
            DataTable dtTemp = ds.Tables[0].Clone();
            if (pageCurrent == pageCount)
                nEndPos = nMax;
            else
                nEndPos = pageSize * pageCurrent;

            nStartPos = nCurrent;

            page1 = pageCurrent;

            //从元数据源复制记录行
            for (int i = nStartPos; i < nEndPos; i++)

            {
              

               dtTemp.ImportRow(ds.Rows[i]);

                nCurrent++;

            }
            this.dataGridView1.DataSource = dtTemp;

         }

 

步骤5   下一页

    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            //下一页
            pageCurrent++;
            if (pageCurrent > pageCount)//当前页号 》 页数
            {
                MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
                pageCurrent--;
                return;
            }
            else
            {
                nCurrent = pageSize * (pageCurrent - 1);
            }
            LoadData();

            if (this.numericUpDown1.Value < this.numericUpDown1.Maximum)
            {
                ++this.numericUpDown1.Value;
            }
        }

 

步骤6  上一页

     private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            //上一页
            pageCurrent--;
            if (pageCurrent <= 0)//当前页号
            {
                MessageBox.Show("已经是第一页,请点击“下一页”查看!");
                pageCurrent++;
                return;
            }
            else
            {
                nCurrent = pageSize * (pageCurrent - 1);
            }

            LoadData();

            if (this.numericUpDown1.Value > 1)
            {
                --this.numericUpDown1.Value;
            }
        }

步骤7  第一页

  private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            //第一页
            pageCurrent = 1;    //当前页数从1开始
            nCurrent = 0;       //当前记录数从0开始

            LoadData();

            this.numericUpDown1.Value = 1;

        }

 

步骤8 最后页

    private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            //最后页
            pageCurrent = pageCount;
            nCurrent = pageSize * (pageCurrent - 1);

            LoadData();

            this.numericUpDown1.Value = Convert.ToInt32(this.textBox1.Text);
        }

 

步骤9 转到指定页

 private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            //转到指定页
            int page = Convert.ToInt32(this.numericUpDown1.Value);
            if (page > page1 && page <= pageCount)
            {
                int number = page - page1;
                if (pageCurrent < pageCount)
                {
                    pageCurrent = pageCurrent + number;
                    if (pageCurrent == pageCount)
                    {
                        nCurrent = pageSize * (pageCurrent - 1);

                    }
                    else
                    {
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
                    LoadData();

                }

 


            }

            if (0 < page && page < page1)
            {
                int number = page1 - page;
                if (pageCurrent > 0)
                {
                    pageCurrent = pageCurrent - number;

                    if (pageCurrent == 1)
                    {
                        nCurrent = pageSize * (pageCurrent - 1);

                    }
                    else
                    {
                        nCurrent = pageSize * (pageCurrent - 1);
                    }

                    LoadData();

                }
            }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值