您的位置:首页 > 编程语言 > C#

C#中Entity Framework实现DataGridView的分页

2017-12-31 13:09 609 查看
在网上看了很多关于datagridview的分页,但大多是用ADO.NET框架的。最近在学习EntityFramework框架,再借鉴之前看到的分页刚好用来练手。

ADO框架分页的原创作者一时间想不起来,但您如果看到,请与我联系!

嗯,菜鸟,所以界面不会好看到哪。

( ̄▽ ̄”)

========================================



首先设置全局变量

int Inum = 1;  //行号,规定其索引初始值为1
int pagesize = 5;//由于数据不多,所以只设置每页5条记录
int allCount = UserDAO.getCount();//总记录条数
int pagecount = 0;//总页数
static EFEntities6 db = new EFEntities6();


getCount()是放在UserDAO.cs里的方法,用于计算总记录条数

static EFEntities6 db = new EFEntities6();
public static int getCount()
{
var query = from u in db.Users
select u;
return query.ToList().Count();
}


winform_load里计算总页数

private void Manage_Load(object sender, EventArgs e)
{
pagecount = allCount % pagesize;
if (pagecount == 0)
{
pagecount = allCount / pagesize;
}
else
{
pagecount = allCount / pagesize + 1;//如果不整除就加1
}
count.Text = "共" + pagecount.ToString() + "页";
index.Text = "当前第" + Inum.ToString() + "页";
bindData();
}


bindata()显示数据库里Users表的数据

//用户信息列表更新
private void bindData()
{

Inum = 1;
var query = (from u in db.Users
select new {
u.ID,
姓名 = u.UserName,
手机 = u.phone,
邮箱 = u.email,
身份证 = u.identification
}
)
.Take(5);
UserData.DataSource = query.ToList();//datagridview显示数据
}


首页

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Inum = 1;
var query = (from u in db.Users
select new
{
u.ID,
姓名 = u.UserName,
手机 = u.phone,
邮箱 = u.email,
身份证 = u.identification
})
.Take(5);//获取Users表内前5条记录
UserData.DataSource = query.ToList();
index.Text = "当前第" + Inum.ToString() + "页";

}


末页

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Inum = pagecount;
int num = UserDAO.getCount()-5;

var query = (from u in db.Users
orderby u.ID
select new
{
u.ID,
姓名 = u.UserName,
手机 = u.phone,
邮箱 = u.email,
身份证 = u.identification
})

.Skip(num).Take(5);

UserData.DataSource = query.ToList();
index.Text = "当前第" + Inum.ToString() + "页";

}


上一页

private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Inum--;
if (Inum > 0)                     //如果当前不是首记录
{
int num = Inum * 5 - 5;//上上页的最后一条数据
var query = (from u in db.Users
orderby u.ID
select new
{
u.ID,
姓名 = u.UserName,
手机 = u.phone,
邮箱 = u.email,
身份证 = u.identification
})

.Skip(num).Take(5);

UserData.DataSource = query.ToList();               //显示上一页记录
index.Text = "当前第" + Inum.ToString() + "页";
}
else
{
MessageBox.Show("现已是第一页记录");
Inum = 1;
index.Text = "当前第" + Inum.ToString() + "页";
return;
}

}


下一页

private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

a966
{

Inum++;
if (Inum <= pagecount)   //如果没有超出总页数
{
int num = (Inum - 1) * 5;//没跳到下一页之前的最后一条数据
var query = (from u in db.Users
orderby u.ID
select new
{
u.ID,
姓名 = u.UserName,
手机 = u.phone,
邮箱 = u.email,
身份证 = u.identification
})

.Skip(num).Take(5);

UserData.DataSource = query.ToList();
index.Text = "当前第" + Inum.ToString() + "页";
}
else
{
MessageBox.Show("现已是最后一页记录");
Inum = pagecount;
index.Text = "当前第" + Inum.ToString() + "页";
return;
}
}


首页



末页



到头



到尾



如果掌握了上面的语句,那么跳转到指定页数也是可以自己写的吧 ╮( ̄▽ ̄)╭

当然这是很简略的分页功能,有待完善,请多多指教。

以上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息