Search 如何同时搜索剑道网格的所有列?
我已经尝试过这个人所做的事情,并且它完美无瑕,谢谢你的帖子: 然而,我现在遇到的问题是,当您试图一次搜索多个列时,只要您将空格分隔到一个新词,它就不再有效 我如何告诉它忽略空格并继续搜索包含的内容 所以,如果你搜索“Verizon LTE”,当我自己搜索,“Verizon”或“LTE”时,它会像它应该搜索的那样工作,但是当它们在一起时,它会返回零结果,而不是同时包含这两个项目 这是我当前的搜索,与上面的链接样式相同Search 如何同时搜索剑道网格的所有列?,search,kendo-ui,filtering,kendo-grid,kendo-asp.net-mvc,Search,Kendo Ui,Filtering,Kendo Grid,Kendo Asp.net Mvc,我已经尝试过这个人所做的事情,并且它完美无瑕,谢谢你的帖子: 然而,我现在遇到的问题是,当您试图一次搜索多个列时,只要您将空格分隔到一个新词,它就不再有效 我如何告诉它忽略空格并继续搜索包含的内容 所以,如果你搜索“Verizon LTE”,当我自己搜索,“Verizon”或“LTE”时,它会像它应该搜索的那样工作,但是当它们在一起时,它会返回零结果,而不是同时包含这两个项目 这是我当前的搜索,与上面的链接样式相同 $(document).ready(function () { //ch
$(document).ready(function () {
//change event
$("#search").keyup(function () {
var val = $('#search').val();
$("#grid").data("kendoGrid").dataSource.filter({
logic: "or",
filters: [
{
field: "ServiceProviderName",
operator: "contains",
value: val
},
{
field: "ManufacturerName",
operator: "contains",
value: val
},
{
field: "ModelNumber",
operator: "contains",
value: val
},
{
field: "ModelName",
operator: "contains",
value: val
},
{
field: "Technology",
operator: "contains",
value: val
},
{
field: "OSTypeName",
operator: "contains",
value: val
}
]
});
});
});
这是剑道格网过滤的限制吗?过滤时,默认情况下,剑道会尝试匹配您键入的整个短语。所以,如果你输入“Verizon”,它将匹配任何包含“Verizon”的内容。如果您输入“LTE”,它将匹配任何包含“LTE”的内容。然而,当您输入“Verizon LTE”时,它将匹配任何包含“Verizon LTE”的内容,而您似乎希望它匹配“Verizon”、“LTE”和“Verizon LTE”(当它匹配前两个时,无论如何都会发生这种情况) 为了实现这种类型的筛选,您需要在筛选函数中预处理
val
,以便使用空格作为标记拆分器创建搜索词数组,然后对数组的每个成员执行筛选并返回聚合结果
因此,为了按空格分割搜索词:
var val=$(“#搜索”).val().split(“”;
这将使val成为一个数组而不是一个文本值,因此您需要基于此数组中的每个值生成筛选器数组。有多种方法可以做到这一点,但有一种方法:
filters: getFieldFilter("ServiceProviderName", "contains", val)
.concat(getFieldFilter("ManufacturerName", "contains", val))
.concat(...);
…其中getFieldFilter可能如下所示:
function getFieldFilter(field, operator, values) {
var ret = [];
for(var i = 0; i < values.length; i++) {
ret.push(
{
field: field,
operator: operator,
value: values[i]
});
}
return ret;
}
函数getFieldFilter(字段、运算符、值){
var-ret=[];
对于(变量i=0;i
是的,我刚刚尝试了.Split(“”),它做了一些古怪的搜索,仍然返回了所有的结果。我要尝试一下,看看。这是离题的,但我以前从未见过.push,你能快速解释一下它的作用吗?Array.prototype.push()
在数组末尾追加一个元素并返回新数组的长度。Mozilla doc:这与我希望的不完全一样,我忘了提到我还希望它继续搜索搜索结果……因此,如果Verizon返回112行,如果我添加另一个字段,我希望对已经过滤的字段进行过滤。是这样吗可能不进行服务器搜索?否则我只会有一个搜索字段,该字段发布服务器搜索并每次返回所有原始数据。但是,这与我最初发布的内容完全相同,谢谢您的回答!可能是$(“#搜索”).val().trim()。拆分(/[\s]+/)
将是拆分搜索项的更好方法。