我们有一个页面使用Kendo Grid来显示使用JSON从URL获取的数据。
我们的页面有两种过滤数据的方式 - 高级用户的“搜索”字段(用于简单,快速过滤)和列过滤器(开箱即用的Kendo解决方案)。
问题是这两种过滤方法可能相互干扰:
(name CONTAINS "Bob") or (company CONTAINS "Bob") or (email CONTAINS "Bob")
(name STARTSWITH "Bob") and ((company CONTAINS "Bob") or (email CONTAINS "Bob"))
现在没有结果,因为公司或电子邮件都不包含“Bob”。
理想情况下,我们要做的是进行两级过滤 - 第一级由“搜索”字段提供,第二级由列过滤器提供。我尝试过两个数据源(一个是从另一个创建的),但到目前为止我还没能完成它的工作。有没有人有任何想法?
答案 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中的基本工作原理。