【问题标题】:Multiple levels of filters in Kendo UI GridKendo UI Grid 中的多级过滤器
【发布时间】:2015-07-09 10:21:31
【问题描述】:

我们有一个页面使用 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"))

现在这不会返回任何结果,因为公司或电子邮件都不包含“Bob”。

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

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

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

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

    因为我们为此使用了 ASP.NET MVC,所以操作看起来非常相似:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 2012-12-28
      相关资源
      最近更新 更多