winform分页案例简单实现方式~
大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。
最近,四班在做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 {
//当前页加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();
}
}
以上就是全部示例说明,你学会了吗?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2020-06-04 sql server中创建数据库和表的语法
2020-06-04 这个点名系统太好用了,快来看看……