DataGridView分页及分页后页面操作(上页、下页、页面跳转)类

来源:互联网 发布:快鱼服饰网络专卖店 编辑:程序博客网 时间:2024/04/30 16:09

class Pagination
    {
        private static int pageSize = 0;     //每页显示行数
        private static int nMax = 0;         //总记录数
        private static int pageCount = 0;    //页数=总记录数/每页显示行数
        private static int pageCurrent = 0;   //当前页号
        private static int nCurrent = 0;      //当前记录行

        private static DataTable dtInfo = new DataTable();
        private static DataSet objSet;
        private static System.Windows.Forms.DataGridView dgvInfo;
        private static ImageList imageList1;
        private static ToolStripLabel lblPageCount;
        private static ToolStripButton lbl4;              //上一页
        private static ToolStripButton lbl6;              //下一页
        private static ToolStripTextBox txtCurrentPage;
        private static BindingNavigator bdnInfo;
        private static BindingSource bdsInfo;
        private static ToolStripStatusLabel StripStatusLabel;


        public static System.Windows.Forms.DataGridView _dgvInfo
        {
            get { return dgvInfo; }
            set { dgvInfo = value;}
        }
        public static ImageList _imageList1
        {
            get { return imageList1; }
            set { imageList1 = value;}
        }
        public static ToolStripLabel _lblPageCount
        {
            get { return lblPageCount; }
            set { lblPageCount = value;}
        }
        public static ToolStripButton _lbl4
        {
            get { return lbl4; }
            set { lbl4 = value;}
        }
        public static ToolStripButton _lbl6
        {
            get { return lbl6; }
            set { lbl6 = value;}
        }
        public static ToolStripTextBox _txtCurrentPage
        {
            get { return txtCurrentPage; }
            set { txtCurrentPage = value;}
        }
        public static BindingNavigator _bdnInfo
        {
            get { return bdnInfo; }
            set { bdnInfo = value;}
        }
        public static BindingSource _bdsInfo
        {
            get { return bdsInfo; }
            set { bdsInfo = value;}
        }
        public static ToolStripStatusLabel _StripStatusLabel
        {
            get { return StripStatusLabel; }
            set { StripStatusLabel = value;}
        }

        //获取数据源
        public static void GetSet(DataSet set)
        {
            objSet = set;
            if (objSet!=null && objSet.Tables.Count != 0)
            {
                if (objSet.Tables[0].Rows.Count != 0)
                {
                    bdnInfo.Enabled = true;
                }
                else
                {
                    bdnInfo.Enabled = false;
                }
                int numbers = objSet.Tables[0].Rows.Count;
                StripStatusLabel.Visible = true;
                StripStatusLabel.Text = "资产数量:" + numbers + "件";
                if (numbers > 0)
                {
                    DataTable table = new DataTable();
                    DataColumn column = new DataColumn();
                    column.ColumnName = "编号";
                    column.AutoIncrement = true;
                    column.AutoIncrementSeed = 1;
                    column.AutoIncrementStep = 1;
                    table.Columns.Add(column);
                    table.Merge(objSet.Tables[0]);
                  

                    dtInfo = table;
                    InitDataSet();
                }
                else
                {
                    DataTable table = new DataTable();
                    DataColumn column = new DataColumn();
                    column.ColumnName = "编号";
                    column.AutoIncrement = true;
                    column.AutoIncrementSeed = 1;
                    column.AutoIncrementStep = 1;
                    table.Columns.Add(column);
                    table.Merge(objSet.Tables[0]);
                    dgvInfo.DataSource = table.DefaultView;
                    dgvInfo.Columns[0].Width = 40;

                }
            }
            else
            {
                return;
            }
        }

        public static void InitDataSet()
        {
            pageSize =20;      //设置页面行数
            nMax = dtInfo.Rows.Count;

            pageCount = (nMax / pageSize);    //计算出总页数

            if ((nMax % pageSize) > 0) pageCount++;

            pageCurrent = 1;    //当前页数重1开始
            nCurrent = 0;       //当前记录数重0开始
            lbl4.Enabled = false;
            if (dtInfo.Rows.Count<=20)
            {
                lbl6.Enabled = false;
            }
            else
            {
                lbl6.Enabled = true;
            }
            LoadData();
        }

        public static void LoadData()
        {

            int nStartPos = 0;   //当前页面开始记录行
            int nEndPos = 0;     //当前页面结束记录行

            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;
            dgvInfo.Columns[0].Width = 40;

        }
        //跳转到指定业
        public static void bdnGOClicke(int page)
        {
            int page1 = Convert.ToInt32(txtCurrentPage.Text);//当前页
            if (page <= 0 || page > pageCount)
            {
                MessageBox.Show("您输入的页码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (page > page1 && page <= pageCount)
            {
                int number = page - page1;
                if (pageCurrent < pageCount)
                {
                    pageCurrent = pageCurrent + number;
                    if (pageCurrent == pageCount)
                    {
                        lbl6.Enabled = false;
                        lbl4.Enabled = true;
                        nCurrent = pageSize * (pageCurrent - 1);

                    }
                    else
                    {
                        lbl6.Enabled = true;
                        lbl4.Enabled = true;
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
                    LoadData();

                }
            }
            if (0 < page && page < page1)
            {
                int number = page1 - page;
                if (pageCurrent > 0)
                {
                    pageCurrent = pageCurrent - number;

                    if (pageCurrent == 1)
                    {
                        lbl4.Enabled = false;
                        lbl6.Enabled = true;
                        nCurrent = pageSize * (pageCurrent - 1);

                    }
                    else
                    {
                        lbl4.Enabled = true;
                        lbl6.Enabled = true;
                        nCurrent = pageSize * (pageCurrent - 1);
                    }

                    LoadData();

                }
            }

 

        }
        //上下业跳转
        public static void bdnInfoItemClicke(string item)
        {
            if (item.Equals("上一页"))
            {
                if (pageCurrent > 0)
                {
                    pageCurrent--;

                    if (pageCurrent == 1)
                    {
                        lbl4.Enabled = false;
                        lbl6.Enabled = true;
                        nCurrent = pageSize * (pageCurrent - 1);

                    }
                    else
                    {
                        lbl4.Enabled = true;
                        lbl6.Enabled = true;
                        nCurrent = pageSize * (pageCurrent - 1);
                    }

                    LoadData();

                }

            }
            if (item.Equals("下一页"))
            {
                if (pageCurrent < pageCount)
                {
                    pageCurrent++;
                    if (pageCurrent == pageCount)
                    {
                        lbl6.Enabled = false;
                        lbl4.Enabled = true;
                        nCurrent = pageSize * (pageCurrent - 1);

                    }
                    else
                    {
                        lbl6.Enabled = true;
                        lbl4.Enabled = true;
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
                    LoadData();

                }

            }

        }
    }