开发工具与关键技术: MVC
作者:彭水清
撰写时间:2019/4/17
首先呢,我得先说明LayuiTablePage、LayuiTableData这三个我自定义的类,LayuiTablePage这个类中有page(代表当前页码)、limit 代表每页数据量、public int
GetStartIndex(){return (page - 1) * limit;}(分页开始序号)、public int GetEndIndex(){ return page * limit - 1;}(分页结束序号)这四个字段;LayuiTableData这个类中有 code(数据状态码 – 可以不设置)、msg(状态信息
– 可以不设置)、count(总行数 – 必须)、data(数据 – 必须)这四个字段。 另外我使用layui插件来初始化数据表格,这里传参就不需要这么麻烦。
我们要想做分页查询,我们应该要从数据库中查询到学院表的所有数据,所以我们通过创建一个实体类(varLinq)来接收数据库中所有学院数据,接着我们自定义一个int类型的名字来接收到上面我们所说到的一个实体类(varLinq)的总行数;当这个表格的总行数超过limit时,多出来的数据将会呈现在第二页,这时我们需要通过Skip()跳过第二页GetStartIndex数据(也就是说当我们点击下一页时,第二页将会从limit+1的位置开始)获取到余下的数据,Take()是让我们可以看到第二页的起始数据到末尾数据,获取指定n数量的连续数据。不过在使用skip和take之前,我们不要忘记在使用它们之前,必须要使用orderby排序。最后一步就是我们在创建一个类来记录我的总行数和数据,然后我就封装返回的数据,总行数就等于我查询学院表的总行数,数据就等于我分页查询的学院表的数据,再返回页面上。
以下就是Visual Studio 2015 分页查询控制器的代码:
public ActionResult SelectAcademeAll(LayuiTablePage layuiTablePage)
{
var varLinq = from tbAcademe in myModel.SYS_Academe
orderby tbAcademe.AcademeID
select tbAcademe;
//查询SYS_Academe的总行数
int totalRow = varLinq.Count();
//分页查询SYS_Academe的数据
//!!!!!!
Skip Take使用前必须要使用orderby
List<SYS_Academe> list = varLinq
.Skip(layuiTablePage.GetStartIndex())
.Take(layuiTablePage.limit)
.ToList();
//封装layui table数据
LayuiTableData<SYS_Academe>layuiTableData=newLayuiTableData<SYS_Academe>
{
count = totalRow,
data =list
};
//返回json
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
}
新手上道,请多多指教。如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔!