博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataGridView分页代码参考
阅读量:6658 次
发布时间:2019-06-25

本文共 2317 字,大约阅读时间需要 7 分钟。

     最近做了一个
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,如需转载请自行联系原作者
你可能感兴趣的文章
js 函数定义和函数表达式的区别
查看>>
编译内核实现iptables防火墙layer7应用层过滤 (三)
查看>>
大话nbu八(Nbu备份恢复本机oracle数据库)
查看>>
风无痕
查看>>
linux内核从2.6到3.0.0
查看>>
mysql的连接超时设置
查看>>
[arm驱动]从零开始写个platform平台总线
查看>>
springboot读取配置文件的三种方式
查看>>
网络学习日记
查看>>
Flexible二次开发平台
查看>>
javascript创建标签的方法
查看>>
Vue踩坑记录及工作记录
查看>>
轻松学 Node.js
查看>>
企业数据保护需要注意什么
查看>>
Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件
查看>>
Linux下使用yamdi为flv视频批量添加关键帧
查看>>
记一次http网站换成https的处理
查看>>
基于Node.js的自动化工具Gulp
查看>>
python基本装饰器
查看>>
/usr/bin/ld: cannot find -lc
查看>>