1

私はこのような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で使用されている限りは正常に機能しますが、NavGridSearchImを開くと問題が発生します。エントリ「all」はもう機能していません。FilterToolBarのクエリは私の空を無視しているようですが、NavGridSearchは無視しません。

FilterToolBarまたはNavGridSearchですべてのステータスエントリを検索するかどうかに関係なく、すべてのエントリを配信する空の文字列の代わりに使用できるワイルドカード記号はありますか?

最新のOpenSourcejQGridLib(4.3.2)を使用しています

前もって感謝します!

4

1 に答える 1

0

「すべて」の基準のユースケースを理解しようとしています。'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にパッチを適用できるように、より良い解決策を見つける必要があります...この問題を再検討するために、しばらくしてからもう一度見つけようとします。

それは役に立ちますか?

于 2012-05-23T14:04:11.663 に答える