马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

DataGridView如何分页

  [复制链接]
查看9842 | 回复4 | 2012-11-28 20:05:17 | 显示全部楼层 |阅读模式
普遍的有两种方式:1.写SQL语句 2.用控件实现

本文将解的是用控件实现。一下内容转自博客园



从界面可以看到,在设计时需要一个DataGridView、BindingNavigate、BindingSource控件,分别命名为dgvInfo、bdnInfo、bdsInfo。
在bdnInfo控件中添加几个用于选择页面的lable和botton,如上图所示。
设计时:
  1. Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 // 1、定义几个所需的公有成员:
  2.        int pageSize = 0;     //每页显示行数
  3.        int nMax = 0;         //总记录数
  4.        int pageCount = 0;    //页数=总记录数/每页显示行数
  5.        int pageCurrent = 0;   //当前页号
  6.        int nCurrent = 0;      //当前记录行
  7.        DataSet ds = new DataSet();
  8.        DataTable dtInfo = new DataTable();
  9. //2、在窗体载入事件中,从数据源读取记录到DataTable中:
  10.        string strConn = "SERVER=127.0.0.1;DATABASE=NORTHWIND;UID=SA;PWD=ULTRATEL";   //数据库连接字符串
  11.        SqlConnection conn = new SqlConnection(strConn);
  12.        conn.Open();
  13.        string strSql = "SELECT * FROM CUSTOMERS";
  14.        SqlDataAdapter sda = new SqlDataAdapter(strSql,conn);
  15.        sda.Fill(ds,"ds");
  16.        conn.Close();
  17.        dtInfo = ds.Tables[0];
  18.        InitDataSet();
  19.    
  20. //3、用当前页面数据填充DataGridView
  21.        private void InitDataSet()
  22.        {
  23.            pageSize = 20;      //设置页面行数
  24.            nMax = dtInfo.Rows.Count;
  25.            pageCount=(nMax/pageSize);    //计算出总页数
  26.            if ((nMax % pageSize) > 0) pageCount++;
  27.            pageCurrent = 1;    //当前页数从1开始
  28.            nCurrent = 0;       //当前记录数从0开始
  29.            LoadData();
  30.         }
  31.        private void LoadData()
  32.        {
  33.            int nStartPos = 0;   //当前页面开始记录行
  34.            int nEndPos = 0;     //当前页面结束记录行
  35.            DataTable dtTemp = dtInfo.Clone();   //克隆DataTable结构框架
  36.            if (pageCurrent == pageCount)
  37.            {
  38.                nEndPos = nMax;
  39.            }
  40.            else
  41.            {
  42.                 nEndPos = pageSize * pageCurrent;
  43.            }
  44.            nStartPos = nCurrent;
  45.            lblPageCount.Text = pageCount.ToString();
  46.            txtCurrentPage.Text = Convert.ToString(pageCurrent);
  47.    
  48.            //从元数据源复制记录行
  49.            for (int i = nStartPos; i < nEndPos; i++)
  50.            {
  51.                dtTemp.ImportRow(dtInfo.Rows[i]);
  52.                nCurrent++;
  53.            }
  54.            bdsInfo.DataSource = dtTemp;
  55.            bdnInfo.BindingSource = bdsInfo;
  56.            dgvInfo.DataSource = bdsInfo;
  57.       }
  58.      //   4、菜单响应事件:
  59.   
  60.      private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
  61.      {
  62.           if (e.ClickedItem.Text == "关闭")
  63.            {
  64.               this.Close();
  65.            }
  66.           if (e.ClickedItem.Text == "上一页")
  67.            {
  68.                pageCurrent--;
  69.                if (pageCurrent <= 0)
  70.                {
  71.                   MessageBox.Show("已经是第一页,请点击“下一页”查看!");
  72.                   return;
  73.                }
  74.                else
  75.                {
  76.                   nCurrent = pageSize * (pageCurrent - 1);
  77.                }
  78.                LoadData();
  79.             }
  80.            if (e.ClickedItem.Text == "下一页")
  81.            {
  82.                pageCurrent++;
  83.                if (pageCurrent > pageCount)
  84.                {
  85.                    MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
  86.                    return;
  87.                 }
  88.                 else
  89.                {
  90.                    nCurrent=pageSize*(pageCurrent-1);
  91.                }
  92.                LoadData();
  93.             }
  94.       }
复制代码
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
wai2dance | 2012-11-29 19:19:11 | 显示全部楼层
沙发 顶一个!! 好帖
金贤重 | 2012-12-7 22:08:46 | 显示全部楼层
正在找这个呢,嘻嘻...支持呢~~
chao2332601 | 2013-6-16 02:09:42 | 显示全部楼层
谢谢分享!!!
chao2332601 | 2013-6-16 04:53:53 | 显示全部楼层
谢谢分享!!!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则