设置条件筛选查询
在完成单表、多表查询后,我们就用开始运用查询出来的数据了。数据少,则可以直接点击该行的数据,数据量大我们就要设置条件筛选去查找到所需求数据的具体位置。设置条件筛选能大大节约使用者对数据操作的时间,从而不用沿着数据表一条一条的查。
如上图中的黑圈里面的下拉框和文本框,将通过下拉框和文本框的选择去筛选所需求的数据,所以将涉及到下拉框绑定的问题,如图,当选择学院确定下来时,年级则是根据学院而改变,同时当选择年级确定下来的时候,班级则是根据年级、专业而改变的。
第一个绑定学院的下拉框很容易,没什么特别的地方。
接下来,在年级下拉框中就要通过学院作为条件来查询出来,因为并不是全部都要查询出来,所以将用到一个学院传递过来的参数。绑定年级下拉框的代码如下:
public ActionResult SelectGrade(int AcademeID)
{
List<Select> listGrade = (from tbGrade in myModels.SYS_Grade
where tbGrade.AcademeID
== AcademeID
select new Select
{
id =
tbGrade.GradeID,
text
= tbGrade.GradeName
}).ToList();
return Json(listGrade, JsonRequestBehavior.AllowGet);
}
选中的是什么学院,查出来的就是什么年级。
public ActionResult SelectSpecialty(int AcademeID)
{
var listSpecialty = (from tbSpecialty in myModels.SYS_Specialty
where
tbSpecialty.AcademeID == AcademeID//获取选中学院
select new Select
{
id = tbSpecialty.SpecialtyID,
text =tbSpecialty.SpecialtyName
}).ToList();
return Json(listSpecialty, JsonRequestBehavior.AllowGet);
}
where tbGrade.AcademeID== AcademeID 是条件筛选的代码。选中的是什么学院,查出来的就是什么专业。
而绑定班级的下拉框,就要使用两个传递下来的参数因为班级有可能是有年级决定、或专业决定,而且还要判断只选一个选项的时候。
public ActionResult SelectClass(int GradeID, int specialtyId)//班级有可能是有年级决定、或专业决定
{
List<Select> listClass = new List<Select>();
if (specialtyId == 0)//只选一个选项的时候
{
listClass = (from tbClass in myModels.SYS_Class
where tbClass.GradeID == GradeID
select new Select
{
id =tbClass.ClassID,
text = tbClass.ClassName
}).ToList();
}
else if (GradeID == 0)
{
listClass = (from tbClass in myModels.SYS_Class
where tbClass.SpecialtyID== specialtyId
select new Select {
id = tbClass.ClassID,
text = tbClass.ClassName
}).ToList();
}
else
{
listClass = (from tbClass in myModels.SYS_Class
where tbClass.GradeID == GradeID
&& tbClass.SpecialtyID == specialtyId
select new Select
{
id = tbClass.ClassID,
text = tbClass.ClassName
}).ToList();
}
return Json(listClass, JsonRequestBehavior.AllowGet);
}
方法写好了,该怎么运用?
$("#UsAcademe").change(function () {
var academeId = $("#UsAcademe").val();
//专业下拉框数据绑定
createSelect("UsSpecialty", "/ExaminationManagement/SetExaminee/SelectSpecialty?AcademeID=" + academeId)
//年级下拉框数据绑定
createSelect("UsGrade", "/ExaminationManagement/SetExaminee/SelectGrade?AcademeID=" + academeId);
//清空班级数据
$("#UsClass").empty();
});
createSelect是已经封装好的方法,因为涉及到传递的参数,所以在URL链接要拼接进去,如:?AcademeID= 。