// 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. silverlight的第一个程序

    摘要:silverlight是微软公司全力打造的一种跨平台.跨浏览器的RIA新技术,silverlight以XAML为界面呈现语言,支持2D矢量图形.动画.数据绑定.控件风格与模板.LINQ.WCF. ...

  2. [geeksforgeeks] Lowest Common Ancestor in a Binary Search Tree.

    http://www.geeksforgeeks.org/lowest-common-ancestor-in-a-binary-search-tree/ Lowest Common Ancestor ...

  3. 动态调用WCF服务

    动态调用WCF服务,只需要提供*.svc地址, 1:命名空间: using System.ServiceModel.Channels;using System.ServiceModel; 2:创建访问 ...

  4. WSDL

    WSDL 彻底理解webservice SOAP WSDL WSDL 详解 http://www.cnblogs.com/hujian/p/3494064.html http://www.cnblog ...

  5. JS范围

    JS API-->DOM/PoneGap/Cordova/Android/NodeJS JS OOP

  6. HOWTO: Create native-looking iPhone/iPad applications from HTML, CSS and JavaScript

    HOWTO: Create native-looking iPhone/iPad applications from HTML, CSS and JavaScript Though it's not ...

  7. [开发]Win7环境下Eclipse连接Hadoop2.2.0

    准备: 确保hadoop2.2.0集群正常运行 1.eclipse中建立mven工程,并编辑pom文件如下 <dependencies> <dependency> <gr ...

  8. 函数式 CSS (FCSS)

    在Wealthfront我们是一个函数式编程的超级粉丝.强调不变性和函数式风格意味着更少的“意外”(surprises),因为副作用是有限的或不存在的.我们能将独立的组件迅速构建出大型系统,通过组合的 ...

  9. [C++]内存字节对齐

    当我们写一个class类,然后sizeof(),然后发现这个值往往比你想象的大,这是为什么呢?这里就要讲到内存对齐的问题. 先来看一下内存对齐的几条原则: 1.对于class(struct/union ...

  10. springmvc web应用程序 java

    搭建普通 springmvc 1.如图建立相关文件 建立在WEB-INF下比较安全,不能直接访问资源. 2.建立Controller控制器,如图 3.需要导入的jar包 commons-logging ...