C# WinForm dataGridview 分页实现

  1. //导入命名空间部分省略  
  2.   
  3.        DBClass.DBExecute dbexecute = new DBExecute();          
  4.   
  5.        string connectionString = @"Data Source=ServerName;Database=DatabaseName;integrated security=true";  
  6.  
  7.        #region 初始化分页显示的参数     
  8.        static int rowsall = 0;//总行数       
  9.        static int pageall = 0;//总页数  
  10.        static int page = 0;//第几页  
  11.        static int count = 20;//设置一页显示20行  
  12.        static int start = 0;//从第start行开始返回  
  13.        #endregion  
  14.  
  15.        #region 建立数据库链接  
  16.        ///   
  17.        /// 建立数据库连接  
  18.        ///   
  19.        /// 返回SqlConnection对象  
  20.        public SqlConnection getcon()  
  21.        {  
  22.            SqlConnection myCon = new SqlConnection(connectionString);              
  23.            return myCon;  
  24.        }  
  25.  
  26.        #region 设置DataGridView分页显示的参数,和初次绑定  
  27.        ///   
  28.        /// 设置DataGridView分页显示的参数,和初次绑定  
  29.        ///   
  30.        /// 设置查询的sql语句  
  31.        /// 设置返回绑定的DataSet中的表的名称  
  32.        /// 要绑定的DataGridView          
  33.        public void upPage(string sqlstr,string table,DataGridView dgv)  
  34.        {  
  35.            rowsall = dbexecute.getds(sqlstr, table).Tables[table].Rows.Count;//总行数  
  36.            if (rowsall == 0)  
  37.            {  
  38.                //如果没有数据则将第一页、上一页、下一页、最后一页设置为不可用;并设置其他参数  
  39.                toolStripButton2.Enabled = false;  
  40.                toolStripButton3.Enabled = false;  
  41.                toolStripButton4.Enabled = false;  
  42.                toolStripButton5.Enabled = false;  
  43.                page = 0;  
  44.                pageall = 0;  
  45.                rowsall = 0;  
  46.                dgv.DataSource = null;  
  47.                tslRowsall.Text = rowsall.ToString();  
  48.                tslPageAll.Text = pageall.ToString();  
  49.                tslPage.Text = page.ToString();  
  50.                return;  
  51.            }  
  52.            if (rowsall > 0)        //判断是否有内容  
  53.            {  
  54.                page = 1;           //如果有内容,设置为第一页  
  55.                start = 0;  
  56.            }              
  57.            int yushu = rowsall % count;        //是否存在余行  
  58.            if (yushu == 0)             //不存在余行时设置总页数  
  59.            {  
  60.                if (rowsall > 0 && rowsall <= count)  
  61.                {  
  62.                    pageall = 1;  
  63.                }  
  64.                else  
  65.                {  
  66.                    pageall = rowsall / count;  
  67.                }  
  68.            }  
  69.            else                 //存在余行时设置总页数  
  70.            {  
  71.                pageall = rowsall / count + 1;  
  72.            }  
  73.   
  74.            {//设置显示数据,   
  75.                tslRowsall.Text = rowsall.ToString();  
  76.                tslPageAll.Text = pageall.ToString();  
  77.                tslPage.Text = page.ToString();  
  78.                if (pageall > 0)  
  79.                { //设置跳转到第几页  
  80.                    tscbPage.Items.Clear();  
  81.                    for (int i = 1; i <= pageall; i++)  
  82.                        tscbPage.Items.Add(i);  
  83.                }  
  84.            }  
  85.            selectsql = sqlstr; //设置sql语句  
  86.            dgv.DataSource = gettb(selectsql ,start,count,"table");//绑定DataGridView  
  87.   
  88.        }  
  89.        #endregion  
  90.  
  91.        #region  
  92.        ///   
  93.        /// 分页返回DataTable  
  94.        ///   
  95.        /// 查询的sql语句  
  96.        /// 从第i行开始返回  
  97.        /// 共返回j行记录  
  98.        /// 返回DataSet中的表明  
  99.        /// 返回DataTable  
  100.        public DataTable gettb(string sql, int start, int count, string tablename)  
  101.        {  
  102.            SqlConnection con = this.getcon();  
  103.            DataSet myds = new DataSet();  
  104.            SqlDataAdapter sda = new SqlDataAdapter(sql, con);  
  105.   
  106.            sda.Fill(myds, start, count, tablename);  
  107.            return myds.Tables[tablename];  
  108.        }  
  109.        #endregion  
  110.   
  111.        /// 第一页  
  112.        private void toolStripButton2_Click(object sender, EventArgs e)  
  113.        {  
  114.            if (pageall > 1)  
  115.            {  
  116.                start = 0;  
  117.                page = 1;  
  118.                tslPage.Text = page.ToString();  
  119.                this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table");//绑定DataGridView  
  120.            }  
  121.        }  
  122.   
  123.        // 上一页  
  124.        private void toolStripButton3_Click(object sender, EventArgs e)  
  125.        {  
  126.            if (page >1)  
  127.            {                  
  128.                page--;  
  129.                start -= 20;                  
  130.                tslPage.Text = page.ToString();  
  131.   
  132.                 this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table");//绑定DataGridView  
  133.            }         
  134.   
  135.        }  
  136.   
  137.        /// 下一页  
  138.        private void toolStripButton4_Click(object sender, EventArgs e)  
  139.        {  
  140.            if (page < pageall)  
  141.            {                  
  142.                page++;  
  143.                start += 20;                  
  144.                tslPage.Text = page.ToString();  
  145.                this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table");//绑定DataGridView  
  146.            }         
  147.               
  148.        }  
  149.   
  150.         //最后一页  
  151.        private void toolStripButton5_Click(object sender, EventArgs e)  
  152.        {  
  153.            if (pageall > 0)  
  154.            {  
  155.                start = (pageall - 1) * count;  
  156.                page = pageall;  
  157.                tslPage.Text = page.ToString();  
  158.                this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table");//绑定DataGridView  
  159.            }  
  160.        }  
  161.   
  162.   
  163.        //上边红色部分获取总行数是调用的数据操作层里的getds方法返回一个数据集,类和方法如下:  
  164.   
  165.        class DBExecute  
  166.        {  
  167.            string G_str_connectionString = @"Data Source=70AB360C9ABA49E\SQLEXPRESS;Database=db_CRM;integrated security=true";//这里设置成你自己的连接  
  168.            public DBExecute(){}  
  169.            public DBExecute(string M_str_connectionString)   
  170.            {  
  171.                G_str_connectionString = M_str_connectionString;  
  172.            }  
  173.            #region 建立数据库链接  
  174.            ///   
  175.            /// 建立数据库连接  
  176.            ///   
  177.            /// 返回SqlConnection对象  
  178.            public SqlConnection getcon()  
  179.            {  
  180.                string M_str_sqlcon = G_str_connectionString;  
  181.                SqlConnection myCon = new SqlConnection(M_str_sqlcon);              
  182.                return myCon;  
  183.            }  
  184.            #endregion  
  185.            #region 查询数据库返回一个DataSet对象  
  186.            ///   
  187.            /// 查询数据库返回一个DataSet对象  
  188.            ///   
  189.            /// SQL语句  
  190.            /// 表名  
  191.            /// 返回DataSet对象  
  192.            public DataSet getds(string M_str_sqlstr, string M_str_table)  
  193.            {  
  194.                DataSet myds = new DataSet();  
  195.                SqlConnection sqlcon = this.getcon();  
  196.                SqlDataAdapter sqlda = new SqlDataAdapter(M_str_sqlstr, sqlcon);  
  197.                sqlda.Fill(myds, M_str_table);             
  198.                return myds;  
  199.            }  
  200.            #endregion  
  201.        }  

你可能感兴趣的:(C#,学习笔记)