今天我们来学习一下组合查询的方法。什么叫组合查询,就是根据自己选择的内容进行数据查询。我们可以根据单个数据查询,也可以根据多个数据查询我们想要的内容。而我今天要讲的是根据学院、年级、班级还有学号和姓名进行查询的方法,我们首先打开开发工具VS,新建一个控制器,先把我们的主页面给构式了,如下图:
当学院发生变化的时候去触发年级ID,当年级发生变化的时候去触发班级ID的改变。来到控制器这里,因为我们要绑定学号、姓名、身份证、性别、学院、专业、年级、班级、账号,所以要用到的表有学生表、学院表、专业表、年级表、班级表,由于这些表不是来源是同一张表但又要连接,所以我们要新建一张表来包含它们,但是要注意的是我们新建的字段要跟数据库的字段一致。先引用Models,下面我们用linq语句来连表查询数据,声明一个类来接收数据,先用from…in来获取学生表,然后用join…in来把表进行连接,on是它们之间的关系,equals是看它们是否相等,orderby…descending是倒叙排序的方式。如下图
因为要用到分页,所以我们要引用一下分页的方法,在上面的LayuiTablePage是我们自己根据的分页的方法。要根据学院、年级、班级的变化而查询,所以我们在上面也把它们进行引用。我们就用select new 我们构建的实体,给我们要绑定的数值相应的赋值,然后用if筛选我们学院、年级、班级、专业的数据,获取总的数量,调用分页封装的类。
上面是把全部数据给查询出来,然后接下来我们把学院的信息给查询出来(绑定到下拉框里面),下面是查询学院的代码:
public ActionResult SelectAcademe()
{ List listAcademe = (from tbAcademe in myModels.SYS_Academe
select new Select
{ id = tbAcademe.AcademeID, text =tbAcademe.AcademeName}).ToList();
return Json(listAcademe, JsonRequestBehavior.AllowGet);
}
把学院查询出来后,我们就把年级查询出来,我们知道年级是根据学院的改变而改变,所以我们在查询年级的时候要在方法里面调用一下学院ID,然后我们判断一下年级里面的学院ID等不等于我们调用的学院ID。而查询班级是根据年级和专业进行改变的,所以我们要在查询班级的方法里面,调用年级和专业,只要它们那个改变了,都可以改变班级的变化。我们把数据都查询出来之后,来到页面把我们的下拉框数据给填写,
function loadSearchSelect() {
$("#searchAcademeID").change(function () {
var academeId = $("#searchAcademeID").val();//获取选中的学院ID
createSelect(“searchGradeID”,"/ExaminationManagement/SetExaminee/SelectGrade?AcademeID=" + academeId);
$("#searchClassID").empty();
})
$("#searchGradeID").change(function () {
var gradeId = $("#searchGradeID").val();//获取选中的年级ID
createSelect(“searchClassID”,"/ExaminationManagement/SetExaminee/SelectClass?GradeID=" + gradeId + “&specialtyId=0”);
});
createSelect(“searchAcademeID”, “/ExaminationManagement/SetExaminee/SelectAcademe”);//学院下拉框绑定
}
调用我们封装的方法createSelect绑定下拉框的值,绑定完成之后,我们在表格调用这个方法,我们把表格的数据先赋值,创建表头,把我们要绑定学号、姓名、身份证、性别、学院、专业、年级、班级、账号给赋值,这样数据就出来了,因为要用到分页的功能,我们给表格一个page的方法,在里面指定我们每页显示的条数和每页条数的选择项的功能。
上面是绑定学院、年级、班级的下拉框,接下来我们要根据具体的学院、年级、班级、考生姓名和学号进行数据查询,首先我们获取查询按钮的值,我是直接给查询按钮一个点击的事件,我们调用这个点击事件,获取一下input的内容并判断学院、年级、班级、专业等不等于空,然后调用表格刷新函数reload,把多条件查询写好之后,我们在表格里面调用一下多条件查询的方法。这样我们就可以查询我们想要的数据了,但我们这样查询出来的数据可能会出现问题,比如你想查找一个人的信息的时候,可能第一次还可以,当你第二次查询的时候可能会找不到数据,这时我们要数据重定向到第一页。这样组合查询的方法就可以实现了。
学习总结:通过这次学习组合查询的方法,我感觉自己的知识有所提高,也让我学到了很多了以前自己不会的东西。比如下拉框数据的绑定,还有会查询的功能,我们可以通过自己选出来的东西进行搜索,让我感觉有所触动。