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

    技术2024-06-13  65

    分页模块设计与实现

    在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();

            }

    //本方法来自博客,转载请标明出处: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)

            {

                //本方法来自博客,转载请标明出处: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();

                }

     

            }

    最新回复(0)