大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。
最近,四班在做KTV点歌系统,正好需要用到分页的内容,所以今天我就整理整理,写了一个简易的winfrom分页案例,以下是案例截图:
案例分析:窗体加载时,默认显示第一页的内容,当单击“下一页”的按钮时,上面的内容就会换成第二页的内容,点击“上一页”按钮,上面所展示的内容就会换成第一页的内容,所有显示的内容均从数据库中查询显示。
上一页和下一页按钮中间显示的当前页和总页数,在翻页的同时,当前页也会随之变化。
下面说一下实现思路(集合分页):
清空所有的label控件。
从数据库中查询所有数据,放在集合中。
循环遍历集合中的数据,显示在label控件中。
通过公式(pageIndex-1)*pageSize来实现分页显示,其中pageIndex为当前页,pageSize为页大小。
总页数的计算方式:
获取集合中的数据的长度,也就是总记录数,与页大小(每页显示的条数)计算出总页数:
总数量除以页大小,如果余数为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 {//当前页加1pageIndex++;//分页查询PageShowGrade(pageIndex);//更新当前页this.lblPage.Text = pageIndex.ToString();}}
7.上一页按钮;
//上一页private void button1_Click(object sender, EventArgs e){if (pageIndex <=1 ){//默认为第一页pageIndex = 1;MessageBox.Show("现在已经是第一页了");}else{//当前页减1pageIndex--;//分页查询PageShowGrade(pageIndex);//更新当前也this.lblPage.Text = pageIndex.ToString();}}
以上就是全部示例说明,你学会了吗?