• 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();
                }
            }

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

  • 相关阅读:
    关于 Wordpress安装时出现“Warning: Cannot modify header information – headers already sent by….”
    C#、.Net经典面试题集锦(二)
    .net 中的事务总结
    什么是webservice
    Web Service与 .NET Remoting
    动态语句exec与sp_executesql执行计划区别
    SQL2005以上版本派生表更新
    清理sql server 2005 服务器名称列表
    如何卸载VS2008
    [怎樣處理]SQL2008、SQL2005類型判斷出錯
  • 原文地址:https://www.cnblogs.com/a1111/p/14877252.html
Copyright © 2020-2023  润新知