最近,四班在做KTV点歌系统,正好需要用到分页的内容,所以今天我就整理整理,写了一个简易的winfrom分页案例,以下是案例截图:
案例分析:窗体加载时,默认显示第一页的内容,当单击“下一页”的按钮时,上面的内容就会换成第二页的内容,点击“上一页”按钮,上面所展示的内容就会换成第一页的内容,所有显示的内容均从数据库中查询显示。
上一页和下一页按钮中间显示的当前页和总页数,在翻页的同时,当前页也会随之变化。
下面说一下实现思路(集合分页):
下面是关键代码:
1.声明的公共变量:
/所有的数据
List gList = new List();
//当前页
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();
}
}
以上就是全部示例说明,你学会了吗?