我有一个像这样的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 Im会遇到麻烦。条目“all”不再起作用。 FilterToolBar中的查询似乎忽略了我的空,但NavGridSearch没有。
是否有任何通配符可用于代替空字符串,无论我是否在FilterToolBar或NavGridSearch中搜索所有状态条目,它都会传递所有条目?
我使用最新的OpenSource jQGrid Lib(4.3.2)
提前致谢!
答案 0 :(得分:0)
我试图理解“所有”标准的用例。似乎“全部”的目的是您希望网格忽略此搜索条件并返回所有行而不管此值如何?如果是这种情况,为什么用户甚至想要选择这个搜索条件 - 他们可以删除它,并且将实现相同的效果。或者我错过了什么?
<小时/> 更新
网格使用函数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可以修补...我会试着找一些时间来重新审视这个问题。
这有帮助吗?