在正文之前有几点要说明,这是依靠Layui这个插件写的,可能并不适合其他的对象(肯定得改一部分),关于这个Layui表格的写法只能来劳烦各位去网上搜一下了,我只能说是在页面放置一个元素
在视图中创建一个layui.table模块(推举使用方法渲染)待用,其中表格数据重载的数据接口(utl路径)暂时为空,接下来是今天的重点了:将Session中的数据提取出,并进行数据分页操作的控制器方法。它的重点在于提取session中数据,这里的分页操作只是一个预处理,具体如何将数据分页还得看视图layui.table模块的传来的参数“limit”与“limits”是如何设置的。
这是一个将Session中的数据提取出,然后进行分页操作的控制器方法(我复制的代码)。
public ActionResult SelectSessImportStudent(LayuiTablePage layuiTablePage){
List<studentVo> listStudentVo = new List<studentVo>();
if (Session["ImportExcel"]!=null) {
listStudentVo = Session["ImportExcel"] as List<studentVo>;
}
List<studentVo> listStu =listStudentVo.OrderByDescending(m=>m.studentID)
.Skip(layuiTablePage.GetStartIndex())
.Take(layuiTablePage.limit).ToList();
LayuiTableData<studentVo> layuiTableData = new LayuiTableData<studentVo>();
int totalRow = listStudentVo.Count();
layuiTableData.data = listStu;
layuiTableData.count = totalRow;
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
}
接下来看这些代码每一段都代表着什么。
public ActionResult SelectSessImportStudent(LayuiTablePage layuiTablePage)
{
List<studentVo> listStudentVo = new List<studentVo>();
}
这一段代码它创建了一个代码路径名为SelectSessImportStudent的控制器方法,它以layui table组件分页要求(“LayuiTablePage”)封装参数“layuiTablePage”。参数“layuiTablePage”是一个集合。“listStudentVo”声明为对象列表并进行赋值,将它初始化为一个新实例,用来存放从Session中提取出来的数据
if (Session["ImportExcel"] != null){
listStudentVo = Session["ImportExcel"] as List<studentVo>;
}
关于这一段代码我还存在一些疑问,就是这个“as”让我一头雾水,我只能认为是:当这个对象“Session[“ImportExcel”]”不为空时,将“Session[“ImportExcel”]”作为对象列表的类型数据存入对象” listStudentVo”。
写到这就已经将Session中的数据提取出来了,现在就是将数据进行分页的预处理
先创建一个新的对象列表命名为“listStu”,对“listStudentVo”获得的数据进行排序,按次序划分成包含指定数量的数据集合然后转换为List。(“OrderByDescending”根据键按降序对序列的元素排序,“Skip”:可以跳过序列中指定数量的元素,然后返回剩余的元素,“Take”从序列开头返回指定数量的连续的元素。)再计算数据总行数,将数据总行数放入“totalRow” ,实例化“LayuiTableData”,命名为“layuiTableData”。将“listStu”和“totalRow”分别存入变量“layuiTableData”属性“data”和“count”,把最后的结果返回到视图,即:
List<studentVo> listStu = listStudentVo.OrderByDescending(m => m.studentID)
.Skip(layuiTablePage.GetStartIndex())
.Take(layuiTablePage.limit)
.ToList();
//实例化
LayuiTableData<studentVo> layuiTableData = new LayuiTableData<studentVo>();
int totaRow = listStudentVo.Count();
layuiTableData.data = listStu;
layuiTableData.count = totaRow;
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
那么数据进行分页的预处理的部分也完成了。