1想要多条件查询数据,既然是有条件的那么肯定就是需要传递参数的了,一般在我们渲染好一个表格,如果没有条件查询那么,我们就可以直接在控制器创建方法获取相应的数据之后返回给试图就可以了。
1.
多条件查询就是根据不同的条件去查询数控库中相应的所以数数据中根据条件筛选数数据,好如一个班里面有五十个学生,每个学生都有自己的姓名、性别、身份证号码、班级等数据,如果你没有参数就是没有条件去学生条查询学生数据那么你得到的是五十个学生的数据,如果你不需要所以学生的数据,你这是需要莫一个学生或者某一部分学生的数据,那么你就需要传递参数来筛选数据,筛选的数据是在查询出来的所以数据的基础上进行的,假如你想根据班级和性别查询符合条件的学生的信息,就需要传递班级ID和性别,根据这两个条件去筛选数据
2.
下面通过一个例子来更好理解多条件查询,下面代码来源于老师授课内容
3.
我们先获取页面上我们选择到的数据,这些数据就是作为参数去筛选数据的,一般都是通过下拉框和文本框选择参数,给给查询按钮一个点击事件调用方法tabStudentSearch();,在方法里面判断获取到的相应参数是否存在值,如果没有就赋值为零,这是为了在控制器中可以通过判断参数的值是否为零而是否作为参数筛选数据做铺垫
function tabStudentSearch ()
{
//获取input内容并判断
var AcademeID = $("#searchAcademeID").val();
if (AcademeID == “” || AcademeID ==
undefined) {
AcademeID = 0;
}
var GradeID = $("#searchGradeID").val();
if (GradeID == “” || GradeID ==
undefined) {
GradeID = 0;
}
var ClassID = $("#searchClassID").val();
if (ClassID == “” || ClassID ==
undefined) {
ClassID = 0;
}
var StudentInfo = $("#searchStudentNumber").val();
if (StudentInfo ==
undefined) {
StudentInfo = “”;
}
//调用表格刷新函数reload
tabStudent = layuiTable.reload(“tabStudent”, {
url: “/ExaminationManagement/SetExaminee/SelectStudentAll”,
//接口的其它参数。格式:where: {token: ‘sasasas’, id: 123}
//page: {
// curr: 1 //重新从第 1 页开始
//},
where: {
AcademeID: AcademeID,
GradeID: GradeID,
ClassID: ClassID,
StudentInfo: StudentInfo,
}
});
}
4.
在控制器中创建方法接收试图传递过来的参数,先在数据库中联表查询全部数据,之后再根据传递过来的参数的值是否为零而判断是否启用这个参数去筛选数据,如果参数值为零,声明不需要修改参数去筛选数据
public ActionResult SelectStudentAll(LayuiTablePage layuiTablePage, int AcademeID, int GradeID, int ClassID, string StudentInfo)//int AcademeID, int
GradeID, int ClassID, string StudentInfo 四个参数,为部分条件查询做铺垫
{
var listStu = from tbStudent in myModels.PW_Student//学生表
join tbAcademe in
myModels.SYS_Academe on tbStudent.AcademeID
equals tbAcademe.AcademeID//学院表
join tbSpcialty in
myModels.SYS_Specialty on tbStudent.SpecialtyID equals
tbSpcialty.SpecialtyID//专业表
join tbGrade in myModels.SYS_Grade on tbStudent.GradeID equals tbGrade.GradeID//年级表
join tbClass in myModels.SYS_Class on tbStudent.ClassID equals tbClass.ClassID//班级表
join tbUser in myModels.PW_User on tbStudent.UserID equals tbUser.UserID//用户表
orderby tbStudent.studentID
descending
select new Student//构建的实体类
{
studentID =
tbStudent.studentID,//学生ID
UserID =
tbStudent.UserID,//用户ID
StudentNumber =
tbStudent.StudentNumber,//学号
StudentName =
tbStudent.StudentName,//姓名
StudentIDNum =
tbStudent.StudentIDNum,//身份证号
StudentSex =
tbStudent.StudentSex,//性别
AcademeName =
tbAcademe.AcademeName,//学院
SpecialtyName =
tbSpcialty.SpecialtyName,//专业
GradeName =
tbGrade.GradeName,//年级
ClassName =
tbClass.ClassName,//班级
UserNuber =
tbUser.UserNuber,//账号
AcademeID = tbStudent.AcademeID,//学院ID
SpecialtyID =
tbStudent.SpecialtyID,//专业ID
GradeID =
tbStudent.GradeID,//年级ID
ClassID =
tbStudent.ClassID//班级ID
};
if (AcademeID > 0)
{
//筛选学院数据
listStu = listStu.Where(m =>
m.AcademeID == AcademeID);
}
if (GradeID > 0)
{//筛选年级数据
listStu = listStu.Where(m =>
m.GradeID == GradeID);
}
if (ClassID > 0)
{//筛选班级数据
listStu = listStu.Where(m =>
m.ClassID == ClassID);
}
if (!string.IsNullOrEmpty(StudentInfo))
{
listStu = listStu.Where(m =>
m.StudentNumber.Contains(StudentInfo) || m.StudentName.Contains(StudentInfo));
}
//获取总数
var intTotalRow =
listStu.Count();
List list = listStu
.Skip(layuiTablePage.GetStartIndex())//分页开始序号
.Take(layuiTablePage.limit)//返回总数
.ToList();
//调用分页封装类
LayuiTableData layuiTableData
= new LayuiTableData();
layuiTableData.count = intTotalRow;//行总数
layuiTableData.data = list;//具体显示数据
return
Json(layuiTableData, JsonRequestBehavior.AllowGet);
5.
}