「すべて」の基準のユースケースを理解しようとしています。'all'の目的は、グリッドがこの検索条件を無視し、この値に関係なくすべての行を返すようにすることだと思われますか?その場合、なぜユーザーはこの検索条件を選択したいと思うのでしょうか。ユーザーはそれを削除するだけで、同じ効果が得られます。それとも私は何かが足りないのですか?
アップデート
グリッドは関数createEl : function(eltype,options,vl,autowidth, ajaxso)
を使用して、検索フォームの選択を作成します。all
残念ながら、この選択では、検索値が""
どの行とも一致しない場合でも、常に条件がリストに追加されます。回避策の1つは、グリッドを変更して、値が空の選択オプションをスキップすることです。ソースファイル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」バージョンを更新してから、GoogleClosureCompilerで実行します。
これが汎用の変更であるかどうかはわかりません。そのため、現時点では回避策と呼んでいます。長期的には、jqGridにパッチを適用できるように、より良い解決策を見つける必要があります...この問題を再検討するために、しばらくしてからもう一度見つけようとします。
それは役に立ちますか?