首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jqgrid :工具栏搜索选项-从下拉列表中选择范围

Jqgrid :工具栏搜索选项-从下拉列表中选择范围
EN

Stack Overflow用户
提问于 2012-06-10 22:49:13
回答 1查看 2.8K关注 0票数 1

我需要帮助来做范围选择在jqgrid数据使用过滤器工具栏下拉-我检查了sopt选项,它只有-

代码语言:javascript
运行
复制
['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本身的过滤器示例,但它们似乎都是针对搜索框的。我很感谢任何人的帮助来实现这一点,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-11 15:07:10

我能够根据样本多单词sample- http://www.ok-soft-gmbh.com/jqGrid/MultiwordSearchingToolbar.htm实现按范围过滤。大部分代码来自上面提到的示例,只做了很小的改动。根据奥列格的反馈进行了修改,使其成为le和ge。

代码语言:javascript
运行
复制
    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, '-');    
     }});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10969658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档