asp.net-mvc - Kendo 数据源过滤器未按预期工作

标签 asp.net-mvc kendo-grid kendo-asp.net-mvc

我正在使用 Kendo MVC 网格来显示数据。我必须根据用户点击的网址过滤数据。下面是剑道网格的代码

查看

@(Html.Kendo().Grid<WebApplication2.ApplicationViewModel>()
        .Name("grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.ApplicationStatus).Width(150);
            columns.Bound(c => c.StartDate).Width(150).Filterable(ftb => ftb.Cell(cell => cell.Operator("equals")));
            columns.Bound(c => c.EndDate).Width(150).Filterable(ftb => ftb.Cell(cell => cell.Operator("equals"))).Groupable(false);                        
        })
               .HtmlAttributes(new { style = "height: 500px;width:100%" })
                .Groupable()
       .Scrollable()
       .Filterable(ftb => ftb.Mode(Kendo.Mvc.UI.GridFilterMode.Row)) // Filter Code
       .Sortable()
       .Pageable(pageable => pageable
       .Refresh(true)
       .PageSizes(true))
       .DataSource(dataSource => dataSource
       .Ajax()
       .ServerOperation(true)
       .Read(read => read.Action("FetchData", "Home"))
                       .Filter(f => f.Add(p => p.ApplicationStatus).IsEqualTo(ViewBag.ApplicationStatus))
                       .Filter(f => f.Add(p => p.StartDate).IsGreaterThanOrEqualTo(Convert.ToDateTime(ViewBag.FromDate)))
                       .Filter(f => f.Add(p => p.StartDate).IsLessThanOrEqualTo(Convert.ToDateTime(ViewBag.ToDate)))
       .PageSize(KendoGridConstants.KendoGridDefaultPageSize)
       )
    )

Controller 代码:

public ActionResult ApplicationGrid(string ApplicationStatus, string fromDate, string toDate)
        {            
            ViewBag.ApplicationStatus = ApplicationStatus == null ? "All" : ApplicationStatus;
            ViewBag.FromDate = fromDate == null ? DateTime.Now.ToShortDateString() : Convert.ToDateTime(fromDate).ToShortDateString();
            ViewBag.ToDate = toDate == null ? DateTime.Now.ToShortDateString() : Convert.ToDateTime(toDate).ToShortDateString();
            return View();
        }

        public ActionResult FetchData([DataSourceRequest]DataSourceRequest request)
        {
           var applicationList = Dbcontext.ApplicationStatus;
            return Json(applicationList.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
        }

如果我在 StartDate 上只保留一个过滤器,它工作正常,但如果我保留两个过滤器,它会向我显示一些不相关的数据。 我需要按日期范围进行过滤。任何其他选择也可以。

最佳答案

我知道这确实很旧,但我也遇到了同样的问题,找不到文档,最终还是一如既往地出现在 Stack Overflow 上。所以我正在贡献我的解决方案。

需要向数据源上的 Filter 语句添加额外的和/或运算符:

.Read(read => read.Action("FetchData", "Home"))
  .Filter(f => f.Add(p => p.StartDate).IsGreaterThanOrEqualTo(Convert.ToDateTime(ViewBag.FromDate)))
       .And().IsLessThanOrEqualTo(Convert.ToDateTime(ViewBag.ToDate)))

关于asp.net-mvc - Kendo 数据源过滤器未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38122574/

相关文章:

asp.net-mvc - TS > 2.2 的 knockout Typescript 定义错误

javascript - Kendo UI 网格导出 excel 和 pdf 导出,没有创建文件

.net - Kendo 网格聚合总和显示空页脚

asp.net-mvc - Kendo UI 网格的 Kendo UI 编辑器模板问题

c# - asp.net MVC 中同一 Controller 和 View 上的多个操作

asp.net - 库包管理器不出现

c# - asp.net mvc + routelink 只得到 404 错误

javascript - 如何阻止 Kendo KO Grid 自动滚动

javascript - 如何在 Kendo UI 网格中比较一行两列中的日期?

c# - AutoComplete 控件调用具有空值的 Controller