3
我使用工具欄搜索。你可以搜索一個專欄的多個詞嗎?分隔符是一個空格,搜索應該使用Like運算符完成。因此,搜索應返回符合搜索字符串中所有單詞的所有行,而不管它們按行的順序排列。例如,有一個「Product Name」列,我想查找所有產品名稱中包含單詞「lever」幷包含單詞「left」的行。JQGrid工具欄搜索:爲列搜索多個單詞
我使用工具欄搜索。你可以搜索一個專欄的多個詞嗎?分隔符是一個空格,搜索應該使用Like運算符完成。因此,搜索應返回符合搜索字符串中所有單詞的所有行,而不管它們按行的順序排列。例如,有一個「Product Name」列,我想查找所有產品名稱中包含單詞「lever」幷包含單詞「left」的行。JQGrid工具欄搜索:爲列搜索多個單詞
一個有趣的問題!
我創建the demo該演示如何實現多字搜索:
相應的代碼是:
$grid.jqGrid('filterToolbar', {
stringResult: true,
defaultSearch: "cn",
beforeSearch: function() {
modifySearchingFilter.call(this, ' ');
}
});
其中modifySearchingFilter
我的方式定義:
var modifySearchingFilter = function (separator) {
var i, l, rules, rule, parts, j, group, str,
filters = $.parseJSON(this.p.postData.filters);
if (filters && typeof filters.rules !== 'undefined' && filters.rules.length > 0) {
rules = filters.rules;
for (i = 0; i < rules.length; i++) {
rule = rules[i];
if (rule.op === 'cn') {
// make modifications only for the 'contains' operation
parts = rule.data.split(separator);
if (parts.length > 1) {
if (typeof filters.groups === 'undefined') {
filters.groups = [];
}
group = {
groupOp: 'OR',
groups: [],
rules: []
};
filters.groups.push(group);
for (j = 0, l = parts.length; j < l; j++) {
str = parts[j];
if (str) {
// skip empty '', which exist in case of two separaters of once
group.rules.push({
data: parts[j],
op: rule.op,
field: rule.field
});
}
}
rules.splice(i, 1);
i--; // to skip i++
}
}
}
this.p.postData.filters = JSON.stringify(filters);
}
};
更新:Free jqGrid支持Custom filtering searching Operation,這使得像上面這樣的場景的實現非常容易。
爲什麼你的函數使這個過濾器字符串 過濾器\t {「groupOp」:「AND」,「rules」:[],「groups」:[{「groupOp」:「AND」,「groups」:[], 「規則」:[{ 「數據」: 「задний」, 「運算」: 「CN」, 「字段」: 「ent_name」},{ 「數據」: 「аморт」, 「運算」: 「CN」,「場「:」ent_name「}]}]} 但複雜的搜索生成此過濾器字符串 過濾器\t {」groupOp「:」AND「,」rules「:[{」field「:」ent_name「,」op「 「cn」,「data」:「задний」},{「field」:「ent_name」,「op」:「cn」,「data」:「аморт」}]} –
@DmitriyLuchkin:對不起,完全理解你的問題。你有一些測試用例,我的演示工作出錯了嗎? – Oleg
@DmitriyLuchkin:可能你的問題是你在'group'部分中將groupOp ='OR''操作與主'groupOp ='AND''操作混淆了? – Oleg