【问题标题】:Overwrite data dropdown values in search form (multipleSearch)覆盖搜索表单中的数据下拉值(multipleSearch)
【发布时间】:2012-05-22 12:25:37
【问题描述】:

我有一个这样的 colModel 条目:

{name:'status', index:'status', sorttype:"text", xmlmap:"STATUS", width:"90", stype: 'select', searchoptions:{sopt: ['eq','ne'], value:':all;Hold:Hold;4-Eye-Check:4-Eye-Check;Approved:Approved;Rejected:Rejected;Closed:Closed'}},

只要在 FilterToolBar 中使用它就可以正常工作,但是如果我打开 NavGridSearch 我会遇到麻烦。条目“全部”不再起作用。 FilterToolBar 中的查询似乎忽略了我的空,但 NavGridSearch 没有。

是否有任何通配符可以用来代替空字符串,无论我在 FilterToolBar 或 NavGridSearch 中搜索所有状态条目,它都会传递所有条目?

我使用最新的 OpenSource jQGrid Lib(4.3.2)

提前致谢!

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    我正在尝试了解“全部”标准的用例。似乎“全部”的目的是您希望网格忽略此搜索条件并返回所有行而不考虑此值?如果是这样的话,用户为什么还要选择这个搜索条件呢——他们可以去掉它,达到同样的效果。还是我错过了什么?


    更新

    网格使用函数createEl : function(eltype,options,vl,autowidth, ajaxso) 为搜索表单创建选择。不幸的是,这个选择总是将all 条件添加到列表中,即使它的搜索值为"",它不会匹配任何行。一种解决方法是修改网格以跳过具有空值的选择选项。使用源文件jquery.jqGrid.src.js 可以添加以下代码跳过all 选项:

    else if (sv.length > 1 && sv[0].length === 0) continue;
    

    这里是createEl的上下文中:

                    if(typeof options.value === 'string') {
                        so = options.value.split(delim);
                        for(i=0; i<so.length;i++){
                            sv = so[i].split(sep);
                            if(sv.length > 2 ) {
                                sv[1] = $.map(sv,function(n,ii){if(ii>0) { return n;} }).join(sep);
                            } else if (sv.length > 1 && sv[0].length === 0) continue; // <-- Change this line
                            ov = document.createElement("option");
                            ov.setAttribute("role","option");
                            ov.value = sv[0]; ov.innerHTML = sv[1];
                            elem.appendChild(ov);
                            if (!msl &&  ($.trim(sv[0]) == $.trim(vl) || $.trim(sv[1]) == $.trim(vl))) { ov.selected ="selected"; }
                            if (msl && ($.inArray($.trim(sv[1]), ovm)>-1 || $.inArray($.trim(sv[0]), ovm)>-1)) {ov.selected ="selected";}
                        }
    

    如果您需要缩小版本,请更新 jqGrid 的“src”版本,然后通过 Google Closure Compiler 运行它。

    我不确定这是一个通用的更改,这就是我现在将其称为解决方法的原因。从长远来看,需要找到更好的解决方案,以便对 jqGrid 进行修补......我会尝试稍后再找一些时间来重新审视这个问题。

    这有帮助吗?

    【讨论】:

    • 嗨贾斯汀非常感谢您的回答。问题是,如果我没有指定
    • 明白。但该示例适用于过滤器工具栏。您真的需要弹出过滤器对话框中的“任何”吗?因为在该屏幕上,如果您不需要过滤条件,那么您可以选择根本不为该列添加过滤器。还是我错过了什么?
    • 嗨贾斯汀,事实上正是这个专栏是我必须使用弹出搜索的原因。用户必须能够一次过滤不止一种状态。不幸的是,我找不到为过滤器工具栏实现“多个下拉过滤器”行为的解决方案,或者有没有?非常感谢您的帮助!
    • 我仍然回到为什么 jqGrid 现在做的还不够好。 The entry "all" is not working anymore 是什么意思?也许一个具体的例子会有所帮助。
    • 嗨贾斯汀,我已经创建了我的网格的简化版本。请看这里:dontworry.ch/files/jqgrid.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多