// 1、定义几个所需的公有成员:

        int pageSize = ;     //每页显示行数

        int nMax = ;         //总记录数

        int pageCount = ;    //页数=总记录数/每页显示行数

        int pageCurrent = ;   //当前页号

        int nCurrent = ;      //当前记录行

        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[];

        InitDataSet();

  //3、用当前页面数据填充DataGridView

        private void InitDataSet()

        {

            pageSize = ;      //设置页面行数

            nMax = dtInfo.Rows.Count;

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

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

            pageCurrent = ;    //当前页数从1开始

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

            LoadData();

         }

        private void LoadData()

        {

            int nStartPos = ;   //当前页面开始记录行

            int nEndPos = ;     //当前页面结束记录行

            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 <= )

                {

                   MessageBox.Show("已经是第一页,请点击“下一页”查看!");

                   return;

                }

                else

                {

                   nCurrent = pageSize * (pageCurrent - );

                }

                LoadData();

             }

            if (e.ClickedItem.Text == "下一页")

            {

                pageCurrent++;

                if (pageCurrent > pageCount)

                {

                    MessageBox.Show("已经是最后一页,请点击“上一页”查看!");

                    return;

                 }

                 else

                { 

                    nCurrent=pageSize*(pageCurrent-);

              }

              LoadData();

           }

     }

从界面可以看到,在设计时需要一个DataGridView、BindingNavigate、BindingSource控件,分别命名为dgvInfo、bdnInfo、bdsInfo。
在bdnInfo控件中添加几个用于选择页面的lable和botton,如图所示:

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

  1. WinForm DataGridView分页功能

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

  2. C# 实现DataGridView分页功能

    C#实现DataGridView分页功能 2010-07-17 13:45:42|  分类: C#|字号 订阅     从界面可以看到,在设计时需要一个DataGridView.BindingNavi ...

  3. C# datagridview分页功能

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

  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. winform里dataGridView分页代码,access数据库

    winform里dataGridView分页,默认dataGridView是不分页的和webform里不一样,webform中GridView自带自带了分页. 现在c/s的程序很多时候也需要webfo ...

  8. 简单说下 Winform 的分页快速开发框架必须要实现的几个功能之一

    简单说下 Winform 的分页快速开发框架必须要实现的几个功能之一 分页非为前端分页  和 后端分页,前端分页只有适用于B/S,B/S的呈现速度远远不如C/S,而C/S则没有这个问题,所以分页必然是 ...

  9. C#实现WinForm DataGridView控件支持叠加数据绑定

    我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支 ...

随机推荐

  1. p3p之讲解

    P3P是一种被称为个人隐私安全平台项目(the Platform for Privacy Preferences)的标准,能够保护在线隐私权,使Internet冲浪者可以选择在浏览网页时,是否被第三方 ...

  2. switch语句的使用,非常好

    这是谭浩强课本上枚举类型的例子,但是我贴这个例子的代码不是因为枚举类型,是因为这个代码使用switch语句用得非常好,值得一贴. 题目是这样的:有红.黄.蓝.白.黑5中颜色的球若干,依次取出3个球,求 ...

  3. mac mysql connection

    随着网络日益发展还有os x用户的增多,有可能会需要在自己的x系统中运行mysql+php环境,比如架设网站或者测试之类.简单步骤如下: 1.下载MySQL 5.x 发行版,解压并安装映像中的两个安装 ...

  4. ASP.NET MVC中几个运用技巧

    1. Razor Helpers 的运用:例如,定义好 ViewBag.Message = "Welcome to ASP.NET MVC!";我要在界面上显示"Welc ...

  5. “System.Data.Entity.Internal.AppConfig"的类型初始值设定项引发异常。{转}

    <connectionStrings> <add name="ConnectionStringName" providerName="System.Da ...

  6. 图解 javascript 作用域链

    还是之前那一段简单的javascript代码: window.onload=function(){ function sub(a,b){ return a-b; } var result=sub(10 ...

  7. 转:jxl导出excel(合并单元格)

    Demo 代码如下: import java.io.*; import jxl.*; import jxl.format.UnderlineStyle; import jxl.write.*; pub ...

  8. iOS第三方支付-支付宝支付

    处理手机中有无支付宝的情况支付宝调用接口: - (void)payOrder:(NSString *)orderStr      fromScheme:(NSString *)schemeStr    ...

  9. ExtJs之Element.select函数

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  10. uploadify IO Error/http error 413

    阿里云的服务器 linux 服务器,php 环境,上传附件问题,记录分享一下: 开始测试的时候,都是图片,小附件,没什么问题 系统上线后,发现大的附件上传 有问题,报错 IO Error 开始检查程序 ...