在mvc程序设计当中,若采用ajax异步刷新的方式,最好采用筛选项的方式完成条件筛选,能够提高代码的严谨性
实现过程:
在视图中,给查询按钮绑定script点击事件,在点击事件中,运用ajax跳转到控制器的筛选项的SetFilterItems方法去除空格,返回到ajax的成功事件中,成功去空格则调用script的另一个GetsecList数据重载方法。在GetsecList方法中运用ajax跳转到控制器的GetContractSelectList方法,完成真正的查询。查询成功返回到ajax的成功事件里,在成功事件里把所有表格循环出来。
以下是代码部分:
筛选项:
在控制器中
#region 筛选项
/// <summary>
/// 筛选项
/// </summary>
public class FilterItems
{
//你查询的三个参数
public static string CMM_CreateMan { get; set; }
public static string CMM_CreateTime { get; set; }
public static string CMM_CreateName { get; set; }
}
/// <summary>
/// 查询方法
/// </summary>
/// <param name="CMM_CreateMan"></param>
/// <param name="CMM_CreateTime"></param>
/// <param name="CMM_DegreeName"></param>
/// <returns></returns>
public ActionResult SetFilterItems(string CMM_CreateMan, string CMM_CreateTime, string CMM_CreateName)
{
//这是处理参数,去空格的操作
var time = CMM_CreateTime.Split('T');
FilterItems.CMM_CreateMan = CMM_CreateMan.Replace(" ", "");
FilterItems.CMM_CreateTime = time[0].Replace(" ", "");
FilterItems.CMM_CreateName = CMM_CreateName.Replace(" ", "");
return Json(true);
}
public ActionResult GetFilterItems()
{
//这是赋值操作给FilterItems类的参数赋值
var backjson = new
{
CMM_RepairName = FilterItems.CMM_CreateMan == null ? "" : FilterItems.CMM_CreateMan,
CMM_RepairTime = FilterItems.CMM_CreateTime == null ? "" : FilterItems.CMM_CreateTime,
CMM_RepairMan = FilterItems.CMM_CreateName == null ? "" : FilterItems.CMM_CreateName,
};
return Json(backjson);
}
/// <summary>
/// 数据筛选——就是条件查询
/// </summary>
/// <param name="List"></param>
/// <returns></returns>
public List<tb_Degree> DataFiltering(List<tb_Degree> List)
{
if (FilterItems.CMM_CreateMan != "" && FilterItems.CMM_CreateMan != null)
{
try
{
List = List.Where(n => n.CreateMan != null && n.CreateMan.Contains(FilterItems.CMM_CreateMan)).ToList();
}
catch (Exception ex)
{
FilterItems.CMM_CreateMan = "";
}
}
if (FilterItems.CMM_CreateTime != "" && FilterItems.CMM_CreateTime != null)
{
try
{
var data = Convert.ToDateTime(FilterItems.CMM_CreateTime);
List = List.Where(n => n.CreateTime == data).ToList();
}
catch (Exception ex)
{
FilterItems.CMM_CreateTime = "";
}
}
if (FilterItems.CMM_CreateName != "" && FilterItems.CMM_CreateName != null)
{
try
{
List = List.Where(n => n.DegreeID== int.Parse( FilterItems.CMM_CreateName)).ToList();
}
catch (Exception ex)
{
FilterItems.CMM_CreateName = "";
}
}
return List;
}
#endregion
查询按钮的script代码块:
function SelDegree() {
var data = {
CMM_CreateMan: $("#selman").val(),
CMM_CreateTime: $("#seldate").val(),
CMM_CreateName: $("#seldegree").val(),
};
$.ajax({
url: "/SetPosition/SetFilterItems",
data: data,
type: "POST",
success: function (data) {
//成功之后 调用这个方法
GetsecList();
},
error: function (msg) {
alert("error:" + msg.responseText);
}
});
}
GetsecList方法:
在视图的script中
function GetsecList() {
var data = {};
$.ajax({
url: "/SetPosition/GetContractSelectList",
data: data,
type: "POST",
success: function (data) {
$("#t_body").find("tr").remove();
var html = "";
for (var i = 0; i < data.datalist.length; i++) {
html += '<tr class="pointer">';
html += '<td class="text-center " id="complaintId">';
html += '<div class="btn-group"><a href="#">配置权限</a></div></td>';
html += '<td class="text-center ">' + parseInt(i + 1) + '</td>';
html += '<td class="text-center ">' + data.datalist[i].degreename + '</td>';
html += '<td class="text-center ">' + data.datalist[i].createtime + '</td>';
html += '<td class="text-center ">' + data.datalist[i].createman + '</td>';
html += '<td class=" last text-center">';
html += '<div class="btn-group"><button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#modalEdit" data-item="'+ data.datalist[i].degreename + '+' + data.datalist[i].id + '">修改</button></div>';
/**/
html += '<div class="btn-group"><button type="button" class="btn btn-primary btn-sm" οnclick="SelStaff()">查看员工</button></div>';
html += '<div class="btn-group"><button type = "button" class="btn btn-primary btn-sm" onclick = "DeleteDegree(' + data.datalist[i].id + ')" >删除</button ></div ></td></tr>';
}
//html = html.replace(/null/g, "").replace(/undefined/g, "");
//$("#secList").empty();
$("#t_body").html(html);
}
});
}
GetContractSelectList方法块:
在控制器中
public ActionResult GetContractSelectList()
{
//查询所有数据
using (ZeroEntities db = new ZeroEntities())
{
//最新建立的数据要在最前面
var conList = db.tb_Degree.ToList();
//将这些数据进行筛选--进入筛选项
conList = DataFiltering(conList);
//数据总数
var count = conList.Count();
//序列化
var List = (from a in conList
select new
{
id = a.DegreeID,
degreename = a.DegreeName == null ? "" : a.DegreeName,
createtime = a.CreateTime == null ? "" : a.CreateTime.Value.ToString("yyyy-MM-dd"),
createman = a.CreateMan == null ? "" : a.CreateMan
}).ToList();
var backjson = new { datalist = List };
return Json(backjson);
}
}
以上就是完整的筛选项啦!