我需要帮助来做范围选择在jqgrid数据使用过滤器工具栏下拉-我检查了sopt选项,它只有-
['equal','not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain']
我在工具栏上找不到任何关于如何处理range的线索。我在过滤器工具栏上有一个下拉列表,它的值类似于"All", "1-4", "5-9"
,当我选择'1-4'
时,我希望网格填充该范围内的所有行。我看了一堆来自stackoverflow和trirand本身的过滤器示例,但它们似乎都是针对搜索框的。我很感谢任何人的帮助来实现这一点,谢谢。
发布于 2012-06-11 15:07:10
我能够根据样本多单词sample- http://www.ok-soft-gmbh.com/jqGrid/MultiwordSearchingToolbar.htm实现按范围过滤。大部分代码来自上面提到的示例,只做了很小的改动。根据奥列格的反馈进行了修改,使其成为le和ge。
modifySearchingFilter = function (separator) {
var i, rules, rule, parts, group, str;
var filters = $.parseJSON(this.p.postData.filters);
if(separator != '-')
return;
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 === 'range') {
// Range should only have 2 parts lowerbound and upperbound
parts = rule.data.split(separator);
if (parts.length == 2) {
if (typeof filters.groups === 'undefined') {
filters.groups = [];
}
group = {
groupOp: 'AND',
groups: [],
rules: []
};
filters.groups.push(group);
// Breaking to 2 rules one le and other ge
group.rules.push({
data: (parts[0]),
op: "ge",
field: rule.field
});
group.rules.push({
data: (parts[1]),
op: "le",
field: rule.field
});
rules.splice(i, 1);
i--; // to skip i++
}
}
}
this.p.postData.filters = JSON.stringify(filters);
}
},
//using range op so that it is not confused with other ops
setRangeSearchSelect = function(columnName) {
grid.jqGrid('setColProp', columnName,
{
stype: 'select',
searchoptions: { value:buildRangeSearchSelect(),
sopt:['range'],
}
});
};
grid.jqGrid('filterToolbar',
{
stringResult:true,
searchOnEnter:true,
defaultSearch:"cn",
beforeSearch: function () {
modifySearchingFilter.call(this, '-');
}});
https://stackoverflow.com/questions/10969658
复制相似问题