C#实现DataGridView分页功能

2010-07-17 13:45:42|  分类: C#|字号 订阅

 
 

从界面可以看到,在设计时需要一个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=www.dow88.cn;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();

}

}

C# 实现DataGridView分页功能的更多相关文章

  1. WinForm DataGridView分页功能

    WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件  .CS: 1 using System; ...

  2. C# datagridview分页功能

    winform开发是或多或少都会接触datagridview控件,如果数据量大,那么必须使用分页功能,但是datagridview自身并没有分页,所以我们要自己实现.在网上搜了一些发现没有太适合自己的 ...

  3. C# Winform DataGridView分页功能的实现

    // 1.定义几个所需的公有成员: ; //每页显示行数 ; //总记录数 ; //页数=总记录数/每页显示行数 ; //当前页号 ; //当前记录行 DataSet ds = new DataSet ...

  4. 创建有输出参数的存储过程并在c#中实现DataGridView分页功能

    不足之处,欢迎指正! 创建有输出参数的存储过程 if exists(select * from sysobjects where name='usp_getPage1') drop procedure ...

  5. winform中DataGridView实现分页功能

    WinForm轻松实现自定义分页 (转载) WinForm轻松实现自定义分页 (转载)   转载至http://xuzhihong1987.blog.163.com/blog/static/26731 ...

  6. DataGridView使用BindingNavigator实现简单分页功能

    接上一篇<DataGridView使用自定义控件实现简单分页功能>,本篇使用BindingNavigator来实现简单分页功能.其实也只是借用了一个BindingNavigator空壳, ...

  7. 简单封装分页功能pageView.js

    分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...

  8. php对文本文件进行分页功能简单实现

    php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...

  9. Asp.net MVC3表格共用分页功能

    在建立的mvc3项目中,在Razor(CSHTML)视图引擎下,数据会在表格中自动的生成,但分页没有好的控件实现,这里我们开发了设计了一个分页的模板,适合于没有数据提交和有数据提交的分页的分页. 第一 ...

随机推荐

  1. git——merge和rebase的区别

    参考http://www.jianshu.com/p/129e721adc6e 我在公司里看到其他同事都使用git pull --rebase拉取远程代码,而我总是用git pull,也有同事和我说过 ...

  2. [Windows Server 2008] 查看PHP详细错误信息

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:查看IIS ...

  3. Java笔记整理列表

    整理Java相关知识点. 2018-11-20 1:Java入门学习 2:Java进阶

  4. Lvs Keepalive DR模式高可用配置

    Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...

  5. * 获取页面参数 * @return 参数打印

    /** * 获取页面参数 * @return 参数打印 */ GetUrlParam: function(paraName) { var url = document.location.toStrin ...

  6. JAVA通用工具类

    1.异常验证框架 框架1:com.google.common.base.Preconditions 框架2:org.apache.commons.lang.Validate 框架3:org.apach ...

  7. BZOJ 2276: [Poi2011]Temperature 单调队列

    Code: #include<bits/stdc++.h> #define maxn 3000000 using namespace std; void setIO(string s) { ...

  8. DP——最长上升子序列(LIS)

    DP——最长上升子序列(LIS) 基本定义: 一个序列中最长的单调递增的子序列,字符子序列指的是字符串中不一定连续但先后顺序一致的n个字符,即可以去掉字符串中的部分字符,但不可改变其前后顺序. LIS ...

  9. Luogu 2951 捉迷藏Hide and Seek

    P2951 [USACO09OPEN]捉迷藏Hide and Seek 题目描述 Bessie is playing hide and seek (a game in which a number o ...

  10. BZOJ 1602 USACO 2008 Oct. 牧场行走

    [题解] 要求出树上两点间的距离,树上的边有边权,本来应该是个LCA. 看他数据小,Xjb水过去了...其实也算是LCA吧,一个O(n)的LCA... #include<cstdio> # ...