我试图了解“全部”标准的用例。'all' 的目的似乎是您希望网格忽略此搜索条件并返回所有行而不考虑此值?如果是这样的话,用户为什么还要选择这个搜索条件呢——他们可以去掉它,达到同样的效果。还是我错过了什么?
更新
网格使用函数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 进行修补...稍后我将尝试找到更多时间来重新讨论这个问题。
这有帮助吗?