在MVC后台开发中,我们经常用到最基础的增、删、查、改,接下来我简单的介绍一下查询里面的多表查询。
下面我要查询的是学生的信息维护:
首先我们先把我们要查询的表格的表头构建出来,在查询过程中,我用到了layui框架,用来查询操作。
第一步就是引用layuiJS插件,不过在引用layui插件之前要先引用jquery插件,因为layui插件是基于jquery上进行开发的,引用如下:
<script src="~/Plugins/jquery-3.2.1.min.js"></script>
<script src="~/Plugins/layui/layui.all.js"></script>
第二步就是渲染表头
var layer, layuiTable; 用于加载layui中的弹出层模块和table表格模块
var TabStudent; 存放渲染后的表格对象
$(function () {
表格渲染
layui.use( 'table', function () {
layuiTable = layui.table; table表格加载
方法渲染
TabStudent = layuiTable.render({
elem: "#tabStudent", 指定原始表格元素选择器(推荐ID选择器)
url: "/Main/SelectStudentList", 数据接口
cols: [[ 设置表头。值是一个二维数组。方法渲染方式必填
{ title: '序号', type: 'numbers', field: 'studentID' },
{ title: '学生编号', field: 'studentNumber', align: 'center' },
{ title: '学生姓名', field: 'studentName', align: 'center' },
{ title: '班级', field: 'calssName', align: 'center' },
{ title: '性别', field: 'studentSex', align: 'center' },
{ title: '手机号', field: 'telephone', align: 'center' },
{ title: '身份证号', field: 'studentIDNum', align: 'center', },
{ title: '图片', align: 'center', templet: customStudentPicture },
{ title: '操作', align: 'center', templet: deleteStudent },
]],
page: true
});
});
});
title:设定标题名称
type:设定列类型,可选值有normal(常规列,无需设定)checkbox(复选框列)
radio(单选框列,layui 2.4.0 新增)numbers(序号列)space(空列)
field:设定字段名。字段名的设定非常重要,且是表格数据列的唯一标识
align:单元格排列方式可选值有:left(默认)、center(居中)、right(居右)
templet: 自定义列模板,模板遵循 laytpl 语法。这是一个非常实用的功能,你可借助它实现逻辑处理,以及将原始数据转化成其它格式,如时间戳转化为日期字符等
page:开启分页(默认:false) 注:从 layui 2.2.0 开始,支持传入一个对象,里面可包含 laypage 组件所有支持的参数(jump、elem除外)
效果图
控制器代码
public ActionResult SelectStudentList(LayuiTablePage layuiTablePage)
{
var listStudent = from tbStudent in myModel.S_Student
join tbClass in myModel.S_Class on tbStudent.classID equals tbClass.classID
select new StudentVo
{
studentID = tbStudent.studentID, 学生ID
classID = tbClass.classID, 班级ID
studentNumber = tbStudent.studentNumber, 学生编号
studentName = tbStudent.studentName, 学生姓名
calssName = tbClass.calssName, 班级名称
studentSex = tbStudent.studentSex, 性别
telephone = tbStudent.telephone, 电话号码
studentIDNum = tbStudent.studentIDNum, 身份证号
studentPicture = tbStudent.studentPicture, 图片
};
查询数据总条数
int intTotalRow = listStudent.Count();
分页查询用户数据
List<StudentVo> listStudents = listStudent
.Skip(layuiTablePage.GetStartIndex())
.Take(layuiTablePage.limit)
.ToList();
LayuiTableData<StudentVo> layuiTableData = new LayuiTableData<StudentVo>()
{
count = intTotalRow,
data = listStudents
};
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
}
效果图