筛选器——MVC中运用ajax完成条件筛选

在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);
            }
        }

以上就是完整的筛选项啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值