winform分页案例简单实现方式~

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。

最近,四班在做KTV点歌系统,正好需要用到分页的内容,所以今天我就整理整理,写了一个简易的winfrom分页案例,以下是案例截图:

案例分析:窗体加载时,默认显示第一页的内容,当单击“下一页”的按钮时,上面的内容就会换成第二页的内容,点击“上一页”按钮,上面所展示的内容就会换成第一页的内容,所有显示的内容均从数据库中查询显示。

上一页和下一页按钮中间显示的当前页和总页数,在翻页的同时,当前页也会随之变化。

下面说一下实现思路(集合分页):

  1. 清空所有的label控件。

  2. 从数据库中查询所有数据,放在集合中。

  3. 循环遍历集合中的数据,显示在label控件中。

  4. 通过公式(pageIndex-1)*pageSize来实现分页显示,其中pageIndex为当前页,pageSize为页大小。

  5. 总页数的计算方式:

    获取集合中的数据的长度,也就是总记录数,与页大小(每页显示的条数)计算出总页数:

    总数量除以页大小,如果余数为0,则商即总页数,否则在商的基础上加1为总页数。

下面是关键代码:

1.声明的公共变量:

/所有的数据
        List<string> gList = new List<string>();
        //当前页
        int pageIndex = 1;
        //总页数
        int totalPage = 0;
        //页大小
        int pageSize = 4;          DBHelper db = new DBHelper();

2.窗体的加载事件:

private void frmPage_Load(object sender, EventArgs e)
        {
            //清空控件内容
            ClearLabel();
            //查询所有数据
            FindGradeAll();
            //总页数等于集合中的所有数据与页大小之间的计算
            totalPage = gList.Count % pageSize == 0 ? gList.Count / pageSize : gList.Count / pageSize + 1;
            //总页数
            this.lblTotalPage.Text = totalPage.ToString();
            //当前页
            this.lblPage.Text = pageIndex.ToString();
            //分页查询,默认显示第一页的内容
            PageShowGrade(1);

        }

3.查询所有的年级名称放在label中

//查询所有的年级名称放在集合中
        public void FindGradeAll() {
            string sql = "select * from grade";
            SqlDataReader dr = db.ExecuteReader(sql);

            while (dr.Read())
            {
                gList.Add(dr["gname"].ToString());
            }
            dr.Close();
        
        }

4.清空Label中的所有内容

//清空Label中的所有内容
        public void ClearLabel() { 
            //获取panel中有多少个控件
            int count = this.panel1.Controls.Count;
            //清空
            for (int i = 0; i < count;i++ ) {
                Label lbl = (Label)this.panel1.Controls[i];
                lbl.Text = "暂无数据";
            }
        }

5.分页显示数据

//分页显示数据
        public void PageShowGrade(int pageIndex) {
            
            for (int i = 0; i < this.panel1.Controls.Count;i++ ) {
                Label lbl = (Label)this.panel1.Controls[i];
                int v = (pageIndex - 1) * pageSize + i;
                lbl.Text = gList[v];
            }
        }

6.下一页按钮

//下一页
        private void button2_Click(object sender, EventArgs e)
        {
            //当前是最后一页
            if (pageIndex == totalPage)
            {
                MessageBox.Show("现在已经是最后一页了");
            }
            else {
                //当前页加1
                pageIndex++;
                //分页查询
                PageShowGrade(pageIndex);
                //更新当前页
                this.lblPage.Text = pageIndex.ToString();
            }
           
        }

7.上一页按钮;

//上一页
        private void button1_Click(object sender, EventArgs e)
        {
           
            if (pageIndex <=1 )
            {
                //默认为第一页
                pageIndex = 1;
                MessageBox.Show("现在已经是第一页了");
            }
            else
            {
                //当前页减1
                pageIndex--;
                //分页查询
                PageShowGrade(pageIndex);
                //更新当前也
                this.lblPage.Text = pageIndex.ToString();
            }
        }

以上就是全部示例说明,你学会了吗?

posted @ 2021-06-04 06:00  穆雄雄  阅读(201)  评论(0编辑  收藏  举报