dataGridview中的分页功能实现(多个对像,不是单一的)

来源:互联网 发布:暴走大事件 恶劣 知乎 编辑:程序博客网 时间:2024/06/05 13:29

 page.class

 

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows .Forms;

namespace pageClass
{
    class Page
    {

        public int pageIndex = 1; //用于存放页数
        public DataTable objDataTable = null;
        private int pageRowNumber = 15;//分页的行数默认的为18
      
        public int getPageRowNumber()//返回分页的行数
        {
            return pageRowNumber;
        }

        public void setDataTable(DataTable datattable)
        {
            this.objDataTable = datattable;
        }
        public void setpageNumber(string number)//设置分页的行数
        {
            try
            {
               this.pageRowNumber =Convert.ToInt32(number);
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString(), "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        public void pageEnter(string pageNumber)//转到页数的方法,传过来的是一个文本框中的值
        {
            try
            {
                pageIndex = Convert.ToInt32(pageNumber);//取得文本框中的值

                pageLoad();//加裁页
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString(), "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        public DataTable pageLoad()//找页并加裁数据
        {
            try
            {

                //生成一个新的表

                if (pageIndex <= 1)//为真时表示到了0页以下所以要回到第一页
                {
                    pageIndex = 1;
                }
                else if (pageIndex > objDataTable.Rows.Count / getPageRowNumber() + 1)
                {
                    pageIndex = 1;//表示到了尽头也在回到第一页
                }
                //真时停用上一页
                //isEnabledPageUp();
                //表示记录数除以10以后加1表示到了最后一页 真时停用下一页
                //isEnabledPageDowm();
                /**因为记录的开始是0所以要为页数-1
                 * 输入的页数为1时,应该得到的记录是0到19
                 *  输入的页数为2时,应该得到的记录是20到39
                 * 。。。。。。。。。。。。。。。。。。。
                 *
                 * */
                DataTable dt = new DataTable();
                for (int k = 0; k < objDataTable.Columns.Count; k++)//objdatset.Tables[0].Columns.Count是总的行数从1开始
                {
                    dt.Columns.Add(this.objDataTable.Columns[k].ColumnName.ToString(), typeof(string));
                }
                try
                {
                    //给表中的每一列赋值
                    for (int i = (pageIndex - 1) * getPageRowNumber(); i <= (pageIndex - 1) * getPageRowNumber() + (getPageRowNumber() - 1); i++)//添加行
                    {
                        DataRow dr = dt.NewRow();
                        for (int j = 0; j < objDataTable.Columns.Count; j++)//objdatset.Tables[0].Columns.Count是总的行数从1开始
                        {
                            dr[j] = objDataTable.Rows[i][j];//添加列
                        }
                        dt.Rows.Add(dr);//把得到的新行添加到新的表中
                    }
                    return dt;
                }
                catch (Exception)
                {
                    return dt;
                }
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString(), "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return null;
            }
        }
        public void pageUp()//上一页
        {
            pageIndex = pageIndex - 1;
            pageLoad();
        }
        public void pageDown()//下一页
        {
            pageIndex = pageIndex + 1;
            pageLoad();
        }
        public Boolean isEnabledPageDowm()//此为下一页
        {
            //表示记录数除以pageNumber以后加1表示到了最后一页 真时停用下一页
            if (pageIndex == objDataTable.Rows.Count / getPageRowNumber() + 1)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        public Boolean isEnabledPageUp()//此为上一页
        {
            //真时停用上一页
            if (pageIndex == 1)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }
}
mYsql.class

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
namespace pageClass
{
    class MySql
    {
        private SqlConnection objSqlConnection;
        private SqlDataAdapter objSqlAdapter;
        private DataSet dataset;
        //用于执行SQL语句的方法只而传值第一个对数的表名第二个是要执行的SQL语句
        public DataSet exeSql(string tableName, string strSql)
        {
            //this.sqlConncetion();
            try
            {
                objSqlConnection.Open();//打开连接    
                objSqlAdapter = new SqlDataAdapter(strSql, objSqlConnection);
                dataset = new DataSet();
                objSqlAdapter.Fill(dataset, tableName);//把得到的值给DataGrid
                return dataset;
            }
            catch (Exception ee)
            {
                MessageBox.Show("/n语句执行失败请检测您的输入信息后再重试!!!发生异常的原因如下/n/n" + ee.Message.ToString(), "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                return null;
            }
            finally
            {
                objSqlConnection.Close();
            }
        }
        public void sqlConnection()
        {
            try
            {
                objSqlConnection = new SqlConnection("Data Source=.;Initial Catalog=text;Integrated Security=True");
            }
            catch (Exception)
            {
                MessageBox.Show("没有可用的数据库或连接不成功,请确保数据库已附加,请自行检测谢谢合作!!!");
            }
        }
    }
}
Form1

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace pageClass
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        DataSet objDataSet = null;
        MySql objMySql = new MySql();
        Page objpage = new Page();
        private void isEnabledButton()//判断是否停用相关Button
        {
            this.btnUP.Enabled = objpage.isEnabledPageUp();
            this.btnDown.Enabled = objpage.isEnabledPageDowm();
        }
        private void dataBinddgMyGrid()//用于给datagrid赋值的方法
        {
            try
            {
                objpage.setDataTable(this.objDataSet.Tables[0]);
            
                dgMyGrid.DataSource = objpage.pageLoad();//把得到的值给DataGrid
                this.txtPageNumber.Text = objpage.pageIndex.ToString();//显示当前的页数
                this.txtNumber.Text = objpage.getPageRowNumber().ToString ();
                isEnabledButton();
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString(), "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            }
        }
        //用于执行SQL语句的方法只而传值第一个对数的表名第二个是要执行的SQL语句
        private void exeSql(string tableName, string strSql)
        {
            try
            {
              objDataSet = objMySql.exeSql(tableName, strSql);
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString(), "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            objMySql.sqlConnection();//初始代Conncetion对象
        }

        private void btnUP_Click(object sender, EventArgs e)//上一页
        {
            objpage.pageUp();
            dataBinddgMyGrid();
        }

        private void btnDown_Click(object sender, EventArgs e)//下一页
        {
            objpage.pageDown();
            dataBinddgMyGrid();
        }

        private void btnGO_Click(object sender, EventArgs e)//转到指定的页数
        {
            objpage.pageEnter(this.txtPageNumber.Text .Trim ().ToString ());
            dataBinddgMyGrid();
        }

        private void btnEnter_Click(object sender, EventArgs e)//设置分页的行数
        {
            objpage.setpageNumber(this.txtNumber.Text .Trim ().ToString ());
            dataBinddgMyGrid();
        }

        private void btnCode_Click(object sender, EventArgs e)//查询shop表
        {
            string mySql = "select * from [shop]";
            exeSql("shop", mySql);
            dataBinddgMyGrid();
        }

        private void btnStudent_Click(object sender, EventArgs e)//查询studentInfo表
        {
            string mySql = "select * from studentInfo";
            exeSql("studentInfo", mySql);
            dataBinddgMyGrid();
        }

        private void btnDorm_Click(object sender, EventArgs e)//查询dorm表
        {
            string mySql = "select * from [dorm]";
            exeSql("dorm", mySql);
            dataBinddgMyGrid();
        }
    }
}

 

原创粉丝点击