DataGridView分页代码参考

简介:
     最近做了一个 DataGridView 的分页显示 Demo 。也是看见网络上很多人询问关于 DataGridView 如何做分页。根据我的认识, Visual Sutido 2005 里的 DataGridView 控件是没有带分页属性的,因此咱们必须通过写代码去实现分页功能。
      
好了,先看一下 Demo 的界面。
     
     
从界面可以看到,在设计时需要一个 DataGridView BindingNavigate BindingSource 控件,分别命名为 dgvInfo bdnInfo bdsInfo
     
bdnInfo 控件中添加几个用于选择页面的 lable botton ,如上图所示。
     
设计时:
     1
、定义几个所需的公有成员:
        
        int pageSize = 0;     // 每页显示行数
         int  nMax = 0;          // 总记录数
         int  pageCount = 0;     // 页数=总记录数 / 每页显示行数
         int  pageCurrent = 0;    // 当前页号
         int  nCurrent = 0;       // 当前记录行
        DataSet ds =  new  DataSet();
        DataTable dtInfo = 
new  DataTable();
    2 、在窗体载入事件中,从数据源读取记录到 DataTable 中:
        
        string strConn = "SERVER=127.0.0.1;DATABASE=NORTHWIND;UID=SA;PWD=ULTRATEL";   // 数据库连接字符串
            SqlConnection conn =  new  SqlConnection(strConn);
            conn.Open();
            
string  strSql = "SELECT * FROM CUSTOMERS";
            SqlDataAdapter sda = 
new  SqlDataAdapter(strSql,conn);
            sda.Fill(ds,"ds");
            conn.Close();
            dtInfo = ds.Tables[0];
            InitDataSet();
      3 、用当前页面数据填充 DataGridView
          
private void InitDataSet()
        
{
            pageSize = 20;      
//
设置页面行数
            nMax = dtInfo.Rows.Count;

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

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

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

            LoadData();
        }
private void LoadData()
        
{
            
int nStartPos = 0;   //
当前页面开始记录行
             int  nEndPos = 0;      // 当前页面结束记录行

            DataTable dtTemp = dtInfo.Clone();   
// 克隆 DataTable 结构框架

            
if  (pageCurrent == pageCount)
                nEndPos = nMax;
            
else
                nEndPos = pageSize * pageCurrent;

            nStartPos = nCurrent;

            lblPageCount.Text = pageCount.ToString();
            txtCurrentPage.Text = Convert.ToString(pageCurrent);

            
// 从元数据源复制记录行
             for  ( int  i = nStartPos; i < nEndPos; i++)
            
{
                dtTemp.ImportRow(dtInfo.Rows[i]);
                nCurrent++;
            }
            bdsInfo.DataSource = dtTemp;
            bdnInfo.BindingSource = bdsInfo;
            dgvInfo.DataSource = bdsInfo;
        }
        4 、菜单响应事件:
 
private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        
{
            
if (e.ClickedItem.Text == "
关闭 ")
            
{
                
this .Close();
            }
            
if  (e.ClickedItem.Text == " 上一页 ")
            
{
                pageCurrent--;
                
if  (pageCurrent <= 0)
                
{
                    MessageBox.Show("
已经是第一页,请点击 下一页 查看! ");
                    
return ;
                }
                
else
                
{
                    nCurrent = pageSize * (pageCurrent - 1);
                }

                LoadData();
            }
            
if  (e.ClickedItem.Text == " 下一页 ")
            
{
                pageCurrent++;
                
if  (pageCurrent > pageCount)
                
{
                    MessageBox.Show("
已经是最后一页,请点击 上一页 查看! ");
                    
return ;
                }
                
else
                

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




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/201800,如需转载请自行联系原作者

目录
相关文章
|
8月前
|
前端开发
bladex中自定义分页的写法~
bladex中自定义分页的写法~
|
JavaScript 测试技术
Easyui datagrid 修改分页组件的分页提示信息为中文
Easyui datagrid 修改分页组件的分页提示信息为中文
107 0
|
数据库 C# 数据库管理
C#:Winfrom 实现DataGridView 自定义分页
今天给大家分享Winform实现DataGridView 自定义分页的案例,感兴趣的朋友可以一起来学习一下。 采用技术:C\#+Winform+Dapper+SQLite。
C#:Winfrom 实现DataGridView 自定义分页
|
SQL 存储 Go
WinForm DataGridView分页功能
WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件   .CS: 1 using System; 2 using System.
1431 0
|
算法
分页解决方案 之 QuickPager的使用方法(在UserControl里面使用分页控件的方法)
        因为我一直没有在UserControl里面使用过QuickPager分页控件,我都是直接在.aspx里面使用,所以这个bug一直没有发现。后来告诉我他把分页控件放在了UserControl里面无法翻页的情况,检查之后才发现分页的事件没有传递到UserControl里面的分页控件里面,就是说分页控件没有得到分页事件。
931 0
|
SQL 算法 测试技术
我自己写的一个分页控件(源码和演示代码)PostBack分页版 for vs2003、SQL Server
温馨提示:asp.net分页控件已经升级了,基于.net2.0 ,支持多种数据库。正式命名为:QuickPager Asp.net 2.0 分页控件。 网站:www.natureFW.com 下载:http://www.naturefw.com/down/List1.aspx 在线演示:http://demo.naturefw.com 上一篇随笔:我的分页控件(未完,待续)——控件件介绍及思路 一、分页控件的工作层次    如果按照三层的划分方式来说,应该算作工作在 UI层 和 逻辑层。
1318 0
|
算法 数据库 内存技术
【视频】自然框架之分页控件的使用方法(一) PostBack方式的一般分页方式
前言:分页控件的优点   1、 按需所取 —— 需要几条记录就从数据库里提取几条记录,不会多取。 2、 使用简单 —— 设置几个属性就可以实现分页的功能。 3、 多种分页算法 —— (即分页用的SQL语句)可以根据不同的需求灵活选择 4、 支持多种数据库 —— 用不同的分页算法对应不同的数据库。
1119 0
|
SQL
分页解决方案 之 QuickPager的使用方法(PostBack分页、自定义获取数据)
        适用范围:网站后台管理、OA、CRM、CMS等,从关系型数据库里提取数据,或者XML等获取数据,不愿意使用Pager_SQL、DataAccessLibrary的情况。       优点:可以使用自己喜欢的方式获取数据,不仅仅限于关系型数据库,其他的也都可以。
868 0
|
SQL 数据库
分页解决方案 之 QuickPager的使用方法(PostBack分页、自动获取数据)
      适用范围:网站后台管理、OA、CRM、CMS等,从关系型数据库里提取数据,愿意使用Pager_SQL、DataAccessLibrary的情况。       最佳数据库:MS SQL。
820 0