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. 基于openstack平台的几种Cloud DB解决方案

    方案一.openstack 官方 trove解决方案 此方案进行过镜像的打包,由于网络问题,还未能成功实现 方案二.salt 或者ansible+ docker 由于 docker部署数据库,在数据库 ...

  2. JS高级——变量提升

    JS执行过程 1.首先是预解析:预解析过程最重要的是提升,在JavaScript代码在预解析阶段,会对以var声明的变量名,和function开头的语句块,进行提升操作 2.执行操作 全局中解析和执行 ...

  3. 类QQ账号生成阐述

    具体需求如下: 数字账号从60000到9999999999(类似qq号一样的东东) 用户获取数字账号为随机分配,也可递加分配,需要符合如下规则 特殊账号需要保留,不能分配给用户,比如:112233(连 ...

  4. day13-迭代器、三元表达式、列表推导式、字典生成式、生成器与递归

    目录 迭代器 可迭代对象 迭代器对象 for循环原理 三元表达式(三目表达式) 列表推导式 字典生成式 zip()方法 生成器 生成器表达式 递归 递归的两个阶段 迭代器 迭代器即迭代的工具,迭代是一 ...

  5. 2 Button

    // <summary> /// 设置透明按钮样式 /// </summary> private void SetBtnStyle(Button btn) { btn.Flat ...

  6. SWING界面

    import java.awt.FlowLayout;import javax.swing.*;import java.awt.Container; public class kk extends J ...

  7. 洛谷——P1613 跑路

    P1613 跑路 题目大意: 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B ...

  8. 28.function_score自定义相关度分数算法

    我们可以做到自定义一个function_score函数,自己将某个field的值,跟es内置算出来的分数进行运算,然后由自己指定的field来进行分数的增强     一.准备数据 给所有的帖子数据增加 ...

  9. 第十六节:pandas之日期时间

    Pandas日期功能扩展了时间序列,在财务数据分析中起主要作用.

  10. fastclick:处理移动端click事件300毫秒延迟

    fastclick:处理移动端click事件300毫秒延迟 1.兼容性 iOS 3及更高版本的移动Safari iOS 5及更高版本的Chrome Android上的Chrome(ICS) Opera ...