// 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. HTTP状态码一览表(HTTP Status Code)

    copy from:http://www.189works.com/article-43064-1.html 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 100 ( ...

  2. Visual Event插件----查看html元素绑定的事件与方法的利器

    WEB标准提倡结构.表现和行为相 分离,现在越来越多采用这种表现和行为的方式,但它也为我们开发调试带来一些问题,网页载入一堆JavaScript,,我们很难搞清楚最后在哪些元素的哪个动作绑定了事件,尤 ...

  3. 企业级Java应用最重要的4个性能指标

    应用性能管理(APM)是一种即时监控以实现对应用程序性能管理和故障管理的系统化解决方案.目前主要指对企业的关键业务应用进行监测.优化,最终达到提高企业应用的可靠性和质量,保证用户得到良好的服务,降低I ...

  4. PC端模拟手机浏览网页

    很多网站都通过User-Agent来判断浏览器类型,如果是3G手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容. 谷歌Chrome浏览器,可以很方便地用来当3G手机模拟器.在Windows的 ...

  5. zoj 2358,poj 1775 Sum of Factorials(数学题)

    题目poj 题目zoj //我感觉是题目表述不确切,比如他没规定xi能不能重复,比如都用1,那么除了0,都是YES了 //算了,这种题目,百度来的过程,多看看记住就好 //题目意思:判断一个非负整数n ...

  6. iOS第三方(ActionSheet)-JTSActionSheet

    外观和系统的基本一样 github地址:https://github.com/jaredsinclair/JTSActionSheet 百度云下载: http://pan.baidu.com/s/1q ...

  7. 怎样在VS2013/MFC中使用TeeChart绘图控件

    TeeChart作为一款强大好用的绘图控件,通过它可以绘制出各式各样的图表,包括2D的,还有3D的,绘制的图表美观实用,这里主要讲述如何在VS2013/MFC中使用TeeChart控件,顺便说一下在V ...

  8. 相对布局RelativeLayout

      一. public class RelativeLayout extends ViewGroup java.lang.Object    ↳ android.view.View      ↳ an ...

  9. 利用PHP SOAP实现WEB SERVICE

    php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,所以我们这里以soap来实现web service.由于默认是没有打开soa ...

  10. SOLID 原则

     世纪的前几年里,“ Uncle Bob”Robert Martin 引入了用OOP 开发软件的五条原 则,其目的是设计出更易于维护的高质量系统.无论是设计新应用程序,还是重构现有基 本代码,这些 S ...