SqlSugar主要支持两类分页查询:1)基于Queryable函数的基本分页查询;2)基于SqlQueryable函数的Sql分页查询。本文主要学习和测试第一类分页查询方式。
基于Queryable函数的基本分页查询主要是在Queryable函数后调用ToPageList函数实现分页查询(如下图所示)。ToPageList分为同步分页和异步分页两类函数,同时如果是SqlSever2012数据库或者是Oracle,还可以调用ToOffsetPage函数实现分页查询。其中参数pageNumber设置查询的页码,pageSize设置每页数据条数,部分重载函数还会返回总的数据条数。SqlSugar支持单表分页,也支持多表分页,具体示例详见参考文献1。
基于前篇文章中的winform项目,结合上述分页查询函数,实现简单的winform版本的分页查询和显示功能。主要包括计算总页数,查询并显示指定页数的数据。
计算总页数主要根据查询数据总条数及每页数量计算。主要代码如下所示:
//获取每页显示数量
int limit = Convert.ToInt32(comboLimits.Text);
//获取数据总条数
int dataCount = db.Queryable<EnvironmentRecord>().Count();
//计算总页数
int totalPages =(dataCount % limit == 0) ? (dataCount / limit) : (dataCount / limit + 1);
txtTotalPages.Text = totalPages.ToString();
//填充跳转页面下拉框
for(int i=1;i<=totalPages;i++)
{
comboJump2Pages.Items.Add(i);
}
comboJump2Pages.SelectedIndex = 0;
查询并显示指定页数的数据功能主要调用Queryable().ToPageList函数实现,主要代码如下:
int limit = Convert.ToInt32(comboLimits.Text);
bsPages.Clear();
foreach (EnvironmentRecord ec in db.Queryable<EnvironmentRecord>().ToPageList(Convert.ToInt32(comboJump2Pages.Text), limit).ToList())
{
bsPages.Add(ec);
}
txtCurPage.Text = comboJump2Pages.Text;
程序的运行效果如下。默认每页显示20条数据,查询并显示第一页数据。
跳转到第6页,查询并显示第6页的数据。
切换每页数量,查询并显示第4页的数据。
SqlSugar的分页查询基本用法比较简单,后续学习layui的数据表格模块和分页模块时会结合SqlSugar的分页查询功能进行功能测试。
参考文献:
[1]https://www.donet5.com/Home/Doc?typeId=2242