//导入命名空间部分省略

DBClass.DBExecute dbexecute = new DBExecute();

string connectionString = @"Data Source=ServerName;Database=DatabaseName;integrated security=true";

#region 初始化分页显示的参数    
        static int rowsall = 0;//总行数      
        static int pageall = 0;//总页数
        static int page = 0;//第几页
        static int count = 20;//返回20行
        static int start = 0;//从第start行开始返回
        #endregion

#region 建立数据库链接
        /// <summary>
        /// 建立数据库连接
        /// </summary>
        /// <returns>返回SqlConnection对象</returns>
        public SqlConnection getcon()
        {
            SqlConnection myCon = new SqlConnection(connectionString);           
            return myCon;
        }

#region 设置DataGridView分页显示的参数,和初次绑定
        /// <summary>
        /// 设置DataGridView分页显示的参数,和初次绑定
        /// </summary>
        /// <param name="sqlstr">设置查询的sql语句</param>
        /// <param name="table">设置返回绑定的DataSet中的表的名称</param>
        /// <param name="dgv">要绑定的DataGridView</param>         
        public void upPage(string sqlstr,string table,DataGridView dgv)
        {
            rowsall = dbexecute.getds(sqlstr, table).Tables[table].Rows.Count;//总行数
            if (rowsall == 0)
            {
                //如果没有数据则将第一页、上一页、下一页、最后一页设置为不可用;并设置其他参数
                toolStripButton2.Enabled = false;
                toolStripButton3.Enabled = false;
                toolStripButton4.Enabled = false;
                toolStripButton5.Enabled = false;
                page = 0;
                pageall = 0;
                rowsall = 0;
                dgv.DataSource = null;
                tslRowsall.Text = rowsall.ToString();
                tslPageAll.Text = pageall.ToString();
                tslPage.Text = page.ToString();
                return;
            }
            if (rowsall > 0)//判断是否有内容
            {
                page = 1;//如果有内容,设置为第一页
                start = 0;
            }           
            int yushu = rowsall % count;//是否存在余行
            if (yushu == 0)//不存在余行时设置总页数
            {
                if (rowsall > 0 && rowsall <= count)
                {
                    pageall = 1;
                }
                else
                {
                    pageall = rowsall / count;
                }
            }
            else//存在余行时设置总页数
            {
                pageall = rowsall / count + 1;
            }
            {//设置显示数据,
                tslRowsall.Text = rowsall.ToString();
                tslPageAll.Text = pageall.ToString();
                tslPage.Text = page.ToString();
                if (pageall > 0)
                { //设置跳转到第几页
                    
                     tscbPage.Items.Clear();
                    for (int i = 1; i <= pageall; i++)
                        tscbPage.Items.Add(i);
                }
            }
            selectsql = sqlstr; //设置sql语句
            dgv.DataSource = gettb(selectsql ,start,count,"table")‘;//绑定DataGridView

}
        #endregion

#region
        /// <summary>
        /// 分页返回DataTable
        /// </summary>
        /// <param name="sql">查询的sql语句</param>
        /// <param name="i">从第i行开始返回</param>
        /// <param name="j">共返回j行记录</param>
        /// <param name="tablename">返回DataSet中的表明</param>
        /// <returns>返回DataTable</returns>
        public DataTable gettb(string sql, int start, int count, string tablename)
        {
            SqlConnection con = this.getcon();
            DataSet myds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter(sql, con);

sda.Fill(myds, start, count, tablename);
            return myds.Tables[tablename];
        }
        #endregion

/// 第一页
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            if (pageall > 1)
            {
                start = 0;
                page = 1;
                tslPage.Text = page.ToString();
                this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table")‘;//绑定DataGridView
            }
        }

// 上一页
        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if (page >1)
            {               
                page--;
                start -= 20;               
                tslPage.Text = page.ToString();
                 this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table")‘; //绑定DataGridView
            }

}

/// 下一页
        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            if (page < pageall)
            {               
                page++;
                start += 20;               
                tslPage.Text = page.ToString();
                this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table")‘;//绑定DataGridView
            }      
           
        }

//最后一页
        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            if (pageall > 0)
            {
                start = (pageall - 1) * count;
                page = pageall;
                tslPage.Text = page.ToString();
                 this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table")‘;//绑定DataGridView
            }
        }

上边红色部分获取总行数是调用的数据操作层里的getds方法返回一个数据集,类和方法如下:

class DBExecute
    {
        string G_str_connectionString = @"Data Source=70AB360C9ABA49E/SQLEXPRESS;Database=db_CRM;integrated security=true";//这里设置成你自己的连接
        public DBExecute(){}
        public DBExecute(string M_str_connectionString)
        {
            G_str_connectionString = M_str_connectionString;
        }
        #region 建立数据库链接
        /// <summary>
        /// 建立数据库连接
        /// </summary>
        /// <returns>返回SqlConnection对象</returns>
        public SqlConnection getcon()
        {
            string M_str_sqlcon = G_str_connectionString;
            SqlConnection myCon = new SqlConnection(M_str_sqlcon);           
            return myCon;
        }
        #endregion
#region 查询数据库返回一个DataSet对象
        /// <summary>
        /// 查询数据库返回一个DataSet对象
        /// </summary>
        /// <param name="M_str_sqlstr">SQL语句</param>
        /// <param name="M_str_table">表名</param>
        /// <returns>返回DataSet对象</returns>
        public DataSet getds(string M_str_sqlstr, string M_str_table)
        {
            DataSet myds = new DataSet();
            SqlConnection sqlcon = this.getcon();
            SqlDataAdapter sqlda = new SqlDataAdapter(M_str_sqlstr, sqlcon);
            sqlda.Fill(myds, M_str_table);          
            return myds;
        }
        #endregion
}

C# DataGridView分页显示的更多相关文章

  1. DataGridView 分页显示

    DataGridView 分页显示函数 1.获取当前页的子数据表函数 public static DataTable GetPagedTable(DataTable dt, int PageIndex ...

  2. winfrom之datagridview分页显示

    这次datagridview绑定数据并分页操作,因为用到了webservice,所以代码会详细讲解.QueryByCondition是一个查询函数 客户端: PageData pageData=new ...

  3. winform里dataGridView分页代码,access数据库

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

  4. C# 实现DataGridView分页功能

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

  5. C#关于分页显示

    ---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...

  6. 多页的TIFF图片在aspx页面分页显示

    一.逻辑实现:将数据库中的二进制TIFF图片读出并分页显示在页面上. 1.显示界面 public FrameDimension MyGuid; ; ; public static MemoryStre ...

  7. asp.net gridview 分页显示不出来的问题

    使用gridview分页显示,在点击第二页的时候显示空白,无数据. 原因是页面刷新,绑定datatable未执行 解决方法: 1.将datatable设置为静态 2.在OnPageIndexChang ...

  8. SSRS(rdl报表)分页显示表头和对表头的冻结处理

    基础环境 最近在公司做西门子某系统的二次开发,需要用到SQLServer Reporting Services(SSRS).我们用的SQL版本是SQLServer 2008 R2:在设计报表时,表格用 ...

  9. JSP分页显示实例(基于Bootstrap)

    首先介绍一款简单利落的分页显示利器:bootstrap-paginator 效果截图: GitHub官方下载地址:https://github.com/lyonlai/bootstrap-pagina ...

随机推荐

  1. 【SSH】——使用ModelDriven的利与弊

    在以往的web开发中,如果要在表单显示什么内容,我们就需要在Action中提前定义好表单显示的所有属性,以及一系列的get和set方法.如果实体类的属性非常多,那么Action中也要定义相同的属性.在 ...

  2. 【log4net】- 日志使用教程

    一.log4net简介: 1. Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的 ...

  3. IO流分类详细介绍和各种字节流类介绍与使用 过滤流 字节流

    Java基础笔记 – IO流分类详细介绍和各种字节流类介绍与使用 过滤流 字节流本文由 arthinking 发表于627 天前 ⁄ Java基础 ⁄ 评论数 1 ⁄ 被围观 2,036 views+ ...

  4. Eclipse中构建scala开发环境的步骤

    Eclipse是一款非常使用的开发工具,熟悉它的童鞋应该都知道,它不仅是最常用的android开发工具,还是最常用的Java开发工具.既然eclipse如此重要,本文小编就和大家一起来扒一扒在ecli ...

  5. BZOJ4513 SDOI2016储能表(数位dp)

    如果n.m.k都是2的幂次方,答案非常好统计.于是容易想到数位dp,考虑每一位是否卡限制即可,即设f[i][0/1][0/1][0/1]为第i位是/否卡n.m.k的限制时,之前的位的总贡献:g[i][ ...

  6. SRM710 div1 MagicNim(博弈论)

    题目大意: 给出n+1堆石子,前n堆石子的数量是a[i],最后一堆只有1个石子,但是具有魔力 拿走该石子的一方可以选择接下来是进行普通的Nim游戏还是anti-nim游戏 问是先手必胜还是必败 首先拿 ...

  7. [IOI2000][POJ1160]Post office

    题面在这里 题意 一条路上有\(n\)个村庄,坐标分别为\(x[i]\),你需要在村庄上建设\(m\)个邮局,使得 每个村庄和最近的邮局之间的所有距离总和最小,求这个最小值. 数据范围 \(1\le ...

  8. [ZJOI2005]沼泽鳄鱼 矩阵乘法

    ---题面--- 题解: 乍一看还是挺懵逼的.和HH去散步很像,思路也是类似的. 复制一段我在HH去散步的题解里面写的一段话吧: 考虑f[i][j]表示i和j是否右边相连,有为1,否则为0,那么f同时 ...

  9. poj2814-拨钟问题-C语言-枚举算法

    #include <stdio.h> #include <stdlib.h> /* 首先,我们考虑用长度为9的数组表示表盘的状态以及调表的操作,终止的条件是表盘状态数组所有元素 ...

  10. 安卓recyclerview的基本使用

    1.先在布局文件中写 <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" a ...