实际项目中呢有一个功能是必不可少的,那就是模糊查询,什么叫模糊查询呢?例如就是你在淘宝想找阿迪达斯但你不记得它的全名了只记得阿迪两个字,输入这两个字后阿迪达斯阿迪斯斯只要有阿迪两个字的都给你找出来。模糊查询就可以做到这样。下面这些就是HTML的代码,很简单就是文本框加一个点的按钮就完了。当然,这是不包括显示内容的那部分啊。
<input type="text" class="form-control" id="txtSearch">
<div class="input-group-prepend ">
<div class="input-group-text" onclick="tabTitleInforSearch()">搜索</div>
</div>
下面就是页面上的样子,不包括显示内容的部分
下面就是页面提交数据的方法,因为有和其他的方法共用控制器所以有四个参数。现在这个方法只需要一个参数就可以了,所以其他的就人为的给他补0,让控制器接受的数据齐全不会报错。
function tabTitleInforSearch() {
var stem = $("#txtSearch").val();
if (stem == null || stem == undefined) {
stem == "";
}
TabTitles = layuiTable.reload("tabTitles", {
url: "/TitleBaseInfor/SelectTitles",//
where: {
TitleTypeID: 0,
PointID: 0,
UnitID: 0,
stem: stem.trim()
} });
}
好了下面就到了控制器的代码了,一个多表连接,然后是要查的字段,接着就是条件查询。stem 才是我们的目标,我重点讲一下!string.IsNullOrEmpty(stem)就是判断他不能为空的意思,listTitles = listTitles.Where(m => m.Stem.Contains(stem)).ToList();就是查询Stem这个字段里面只要包含stem的内容都找出来,Contains是返回包含子串的字符串的意思。至于LayuiTablePage是封装好的分页的格式内容。
public ActionResult SelectTitles(LayuiTablePage layuiTablePage, int TitleTypeID, int PointID, int UnitID, string stem)
{
var listTitles = (from tbTitle in myModel.PW_Title
join tbTitleType in myModel.SYS_TitleType on tbTitle.TitleTypeID equals tbTitleType.TitleTypeID
join tbDofd in myModel.SYS_Dofd on tbTitle.DofdID equals tbDofd.DofdID
join tbSubject in myModel.SYS_Subject on tbTitle.SubjectID equals tbSubject.SubjectID
join tbPoint in myModel.SYS_Point on tbTitle.PointID equals tbPoint.PointID
join tbUnit in myModel.SYS_Unit on tbTitle.UnitID equals tbUnit.UnitID
select new TitlesInfor
{
列明查询所需的字段
TitleID = tbTitle.TitleID,//题目ID
TitleType = tbTitleType.TitleType,//题目类型
Dofd = tbDofd.Dofd,//难度
Subject = tbSubject.Subject,//科目
Point = tbPoint.PointName,//知识点
Unit = tbUnit.Unit,//使用单位
Stem = tbTitle.Stem,//题目信息
RightKey = tbTitle.RightKey,//正确答案
Remarks = tbTitle.Remarks,//备注
ToVoidNo = tbTitle.ToVoidNo,//是否作废
TitleTypeID = tbTitle.TitleTypeID,//题目类型ID
PointID = tbTitle.PointID,//知识点ID
UnitID = tbTitle.UnitID//使用单位ID
}).ToList();
条件查询的判断条件
if (TitleTypeID > 0)
{
listTitles = listTitles.Where(m => m.TitleTypeID == TitleTypeID).ToList();
}
if (PointID > 0)
{
listTitles = listTitles.Where(m => m.PointID == PointID).ToList();
}
if (UnitID > 0)
{
listTitles = listTitles.Where(m => m.UnitID == UnitID).ToList();
}
if (!string.IsNullOrEmpty(stem))
{
listTitles = listTitles.Where(m => m.Stem.Contains(stem)).ToList();
}
int totals = listTitles.Count();
List<TitlesInfor> listTitlesInfor =
listTitles.OrderByDescending(m => m.ToVoidNo == false)
.Skip(layuiTablePage.GetStartIndex()).Take(layuiTablePage.limit).ToList();
LayuiTableData<TitlesInfor> layuiTableData = new LayuiTableData<TitlesInfor>()
{
count = totals,
data = listTitlesInfor
};
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
}
这样就可以实现模糊查询的功能,其实这个查询还是很好理解的是吧,好了说得也差不多了。下面就看一下实际的效果吧。从图片中还是可以见到效果的。效果出来了就证明了代码的正确性。好了这次的分享就到这里结束了。