查询数据是做任何项目都需要用到的功能模块,下面我和大家分享一下我做的查询数据的一个功能点,下面是在整个学院表里直接查询某个学生,那么直接输入那个学生的学号或姓名便可,如图
未查询
把你想要查询的学生的学号或姓名输入里面,按查询,数据便出来了
如果你想要查询某个学院的某个年纪的某个班级,就直接在下拉框那里选择,再点击查询,数据便出来了
如图,下面是查询:计算机科学与技术学院,2016级,04121601班,所有的数据便对应的出来了,一共查
询到34条数据。
现在和大家分享一下代码,1、首先在控制器这边把方法写好,2、进行多条件查询,把学生表、学院表、专业表、年级表、班级表、用户表、连接起来进行查询,3、然后构建的实体类,4、再进行判断筛选、学院、年级、班级、的数据,5、获取总数,6、然后调用分页封装类便可。
public ActionResult SelectStudentAll(LayuiTablePage layuiTablePage, 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<Student> list = listStu
.Skip(layuiTablePage.GetStartIndex())
.Take(layuiTablePage.limit)
.ToList();
//调用分页封装类
LayuiTableData<Student> layuiTableData = new LayuiTableData<Student>(); ;
layuiTableData.count = intTotalRow;//行总数
layuiTableData.data = list;//具体显示数据
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
}
再到视图这边把代码写好:
1、调用函数 tabStudentSearch(),2、获取input内容并判断 (学院、年级、班级)ID 等于空,
3、调用表格刷新函数reload,4、重定向到第1 页开始,5、赋值
就这样一步步有顺序去写代码,不能捣乱顺序,才会实现功能。
重定向到第 1 页开始这句代码一定要写:page: { curr: 1 }, 不然当你输入学号或姓名的时候,是搜索不到的,大家一定不要犯这种错误,我刚开始的时候经常犯这种错误,看起来这句代码好像没多大用处,但是少了这句代码,你的查询功能就是一个有
bug 的功能,当你的项目出现 bug 的时候,就会知道这句代码的重要性了。
//多条件查询table
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,
}
});
}