Kendo UI Grid中的多级过滤器

时间:2015-07-09 10:21:32

标签: kendo-ui kendo-grid

我们有一个页面使用Kendo Grid来显示使用JSON从URL获取的数据。

我们的页面有两种过滤数据的方式 - 高级用户的“搜索”字段(用于简单,快速过滤)和列过滤器(开箱即用的Kendo解决方案)。

问题是这两种过滤方法可能相互干扰:

  1. 用户在搜索过滤器中键入“Bob”(这会在多个列上添加过滤器,包括“名称”),例如:(name CONTAINS "Bob") or (company CONTAINS "Bob") or (email CONTAINS "Bob")
  2. 用户在“名称”列上添加了“开头”过滤器 - 他们突然没有结果,因为Kendo列过滤器将我们的搜索过滤器更改为:(name STARTSWITH "Bob") and ((company CONTAINS "Bob") or (email CONTAINS "Bob"))
  3. 现在没有结果,因为公司或电子邮件都不包含“Bob”。

    理想情况下,我们要做的是进行两级过滤 - 第一级由“搜索”字段提供,第二级由列过滤器提供。我尝试过两个数据源(一个是从另一个创建的),但到目前为止我还没能完成它的工作。有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

这可能不是您可能想要的解决方案,但我们使用不同的方法解决了基本相同的问题:我们严格区分“搜索”和“过滤”两个术语。网格始终能够过滤(列过滤器)“搜索结果”,但搜索不会直接使用内置网格过滤功能进行搜索,而是使用getAdditionalData方法传入搜索关键字

在后端,我们首先搜索,然后应用请求过滤器。

因为我们正在使用ASP.NET MVC,所以该操作非常类似于:

public ActionResult Search([DataSourceRequest]DataSourceRequest request, 
                            string keyword)
{
    return Json(_ourDataRepository.Search(keyword)
        .ToDataSourceResult(request));
}

Here描述了它在ASP.NET MVC中的基本工作原理。