• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#DataGridView分页功能的实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

首先,拖两个控件BindingNavigate、BindingSource;

1.定义公共变量

        int pageCount;//总页数
        int pageRSize;//每页显示的行数
        int RowMax;//总共行数
        int currentR;//当前行号
        int currentP;//当前页号
        DataTable dat = new DataTable();

2.  获取数据

            DataBaseConnection connection = new DataBaseConnection();
            //建立数据库引擎连接,注意数据表(后缀为.db)应放在DEBUG文件下
            string sql = ("select 测线名称,起始桩号,X坐标,Y坐标,方向角,间隔,个数,线号增量,测线间距 from line where 所属项目='" + project + "'");
            //建立适配器,通过SQL语句去搜索数据库
            DataSet myds = connection.getDataSet(sql);
            dat = myds.Tables[0];
            SetIni();

3.设置

  private void SetIni(int p)
        {
            pageRSize = 10;
            if (p == 1)
            {
               
                currentP = 1;
                currentR = 0;

            }
            else
            {
                currentP = p;
                currentR = pageRSize * (currentP - 1);
            }
            RowMax = dat.Rows.Count;
            pageCount = RowMax / pageRSize;
            if (RowMax % pageRSize > 0)
            {
                pageCount++;
            }

            ncount_Label3.Text = "/" + pageCount.ToString();
            enbut();
        }

 

 private void enbut()
        {
            int nStartR = 0;   //当前页面开始行
            int nEndR = 0;     //当前页面结束行
            if (dat.Rows.Count == 0)
            {
                Describ_dataGridView.DataSource = null;
                return;
            }
            else
            {
               
                if (currentP == 1)
                {
                    bindingNavigatorMoveFirstItem.Enabled = false;
                    bindingNavigatorMovePreviousItem.Enabled = false;
                }
                else
                {
                    bindingNavigatorMoveFirstItem.Enabled = true ;
                    bindingNavigatorMovePreviousItem.Enabled = true ;
                }

                if (currentP == pageCount)
                {
                  
                    nEndR = RowMax;
                    bindingNavigatorMoveNextItem.Enabled = false;
                    bindingNavigatorMoveLastItem.Enabled = false;
                }
                else
                {
                    nEndR = pageRSize * currentP;//当前页号*每页显示的行数
                    bindingNavigatorMoveNextItem.Enabled = true ;
                    bindingNavigatorMoveLastItem.Enabled = true;
                }
                nStartR = currentR;
                bindingNavigatorPositionItem.Text = currentP.ToString();
                De_Yetxt.Text = currentP.ToString();

                getdata(nStartR, nEndR, currentR);
                
            }
        }
private void getdata(int nStartR,int nEndR,int currentR) 
        {
            DataTable dat2 = dat.Clone();//克隆DataTable结构,即将字段名称进行复制
            for (int i = nStartR; i < nEndR; i++)
            {
               
                dat2.ImportRow(dat.Rows[i]);
                currentR++;
            }
            bindingSource1.DataSource = dat2;
            bindingNavigator1.BindingSource = bindingSource1;
            Describ_dataGridView.DataSource = bindingSource1;
            Describ_dataGridView.ClearSelection();
        }

设置点击事件和输入限制

  private void bindingNavigator1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            if(e.ClickedItem.Text=="移到上一页")
            {
                currentP--;
                if (currentP <= 0)
                {
                    MessageBox.Show("已经是第一页了!");
                    currentP++;
                    return;
                }
                else 
                {
                   currentR=pageRSize*(currentP-1);
                }
                enbut();
            }
            if (e.ClickedItem.Text == "移到下一页")
            {
                currentP++;
                if (currentP > pageCount)
                {
                    MessageBox.Show("已经是最后一页了!");
                    currentP--;
                    return;
                }
                else
                {
                    currentR = pageRSize * (currentP - 1);
                }
                enbut();
            }
            if (e.ClickedItem.Text == "首页")
            {

                currentP = 1;

                currentR = 0;

                enbut();

            }

            if (e.ClickedItem.Text == "尾页")
            {

                currentP = pageCount;

                currentR = pageRSize * (currentP - 1);

                enbut();

            }
             if (e.ClickedItem.Text == "确定")
            {
                
                int a=Convert.ToInt32(De_Yetxt.Text.Trim());
                if (a > pageCount)
                {
                    currentP = pageCount;
                    currentR = pageRSize * (currentP - 1);
                    enbut();
                }
                else if (a < 0)
                {
                    currentP = 1;

                    currentR = 0;

                    enbut();
                }
                else
                {
                    currentP = a;
                    currentR = pageRSize * (currentP - 1);
                    enbut();
                }
            }
        }

      

        private void De_Yetxt_TextChanged(object sender, EventArgs e)
        {
            bool IsNum = true;

            foreach (char c in De_Yetxt.Text.Trim())
            {

                if (!char.IsNumber(c))
                {
                    IsNum = false;
                    break;
                }

            }

            if (IsNum == false)
            {

                De_Yetxt.Text = currentP.ToString();

            }
        }
       

平时:

如果需要在已有的的数据上增加:、

 dat.Rows.Add(new object[]{newLineName, startPile, nextLng1,nextLat1, azimuth, Interval, count});
 SetIni();

删除时

 string sq = ("select 测线名称,起始桩号,X坐标,Y坐标,方向角,间隔,个数 from line where 所属项目='" + project + "'");
            //建立适配器,通过SQL语句去搜索数据库
            DataSet myds = connection.getDataSet(sq);
            dat = myds.Tables[0];
            SetIni(Convert.ToInt32(bindingNavigatorPositionItem.Text));

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#工具:WPF分页发布时间:2022-07-10
下一篇:
C#压缩图片HttpPostedFile转Image发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap