JQGrid工具栏search:search一个列的多个单词
我使用工具栏search。 你可以search一个专栏的多个词吗? 分隔符是一个空格,search应该使用Like操作符来完成。 因此,search应返回符合searchstring中所有单词的所有行,而不pipe它们按行的顺序排列。 例如,有一个“产品名称”列,我想查找产品名称中包含单词“lever”的所有行,并包含单词“left”。
一个有趣的问题!
我创build了演示如何实现多词search的演示 :
相应的代码是:
$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); } };
更新: 免费的jqGrid支持自定义过滤search操作 ,这使得像上面这样的场景的实现非常容易。