C# WinForm 实现增删改查等功能(Access版) 系列之六-分页

C# WinForm 实现增删改查等功能(Access) 系列之六

分页模块设计与实现

ResumeTest主窗体中:

public int pageSize = 0;     //每页显示行数

      public int nMax = 0;         //总记录数

      public int pageCount = 0;    //页数=总记录数/每页显示行数

      public int pageCurrent = 0;   //当前页号

      public int nCurrent = 0;      //当前记录行

 

private void InitDataSet(DataTable _dtInfo)

        {

            DataTable dtInfo = new DataTable();

            dtInfo = _dtInfo;

            pageSize = 1;      //设置页面行数

            nMax = dtInfo.Rows.Count;

           // MessageBox.Show("取得最大值:"+nMax.ToString(),"提示");

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

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

            pageCurrent = 1;    //当前页数从1开始

            nCurrent = 0;       //当前记录数从0开始

            LoadData();

        }

//本方法来自CSDN博客,转载请标明出处:http://blog.csdn.net/gisfarmer/archive/2008/08/05/2771166.aspx

        private void LoadData()

        {

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

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

            DataTable dtTemp = dtInfo.Clone();   //克隆DataTable结构框架

           // DataTable dtTemp = dtInfo;

            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++;

            }

            bindingSource1.DataSource = dtTemp;

            bindingNavigator1.BindingSource = bindingSource1;

            dataGridView1.DataSource = bindingSource1;

        }

 /// <summary>
        /// 分页实现
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bindingNavigator1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            //本方法来自CSDN博客,转载请标明出处:http://blog.csdn.net/gisfarmer/archive/2008/08/05/2771166.aspx
           
            if (e.ClickedItem.Text == "关闭")
            {
                this.Close();
            }
            if (e.ClickedItem.Text == "上一页")
            {
                pageCurrent--;
                if (pageCurrent <= 0)
                {
                    MessageBox.Show("已经是第一页,请点击“下一页”查看!");
                    return;
                }
                else
                {
                    nCurrent = pageSize * (pageCurrent - 1);
                }
                LoadData();
            }
            if (e.ClickedItem.Text == "下一页")
            {
                pageCurrent++;
                if (pageCurrent > pageCount)
                {
                    MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
                    return;
                }
                else
                { 
                   nCurrent=pageSize*(pageCurrent-1);
                }
                LoadData();
            }

        }

你可能感兴趣的:(框架,object,C#,Access,WinForm)