0

高度なフィルターを備えたjqGrid 4.3.1があります。はい/いいえ型のようなブール型の列のいくつかは、新しい高度なフィルター行が作成されたときに列の型が選択されたときにドロップダウンを表示します。たとえば、列 2 が IsActive (ブール値) 型であるとします。これを選択すると、テキスト ボックスの代わりにドロップダウンが表示されます。jqGrid の高度なフィルターをオーバーライドするコードは次のとおりです。

var cols = grid.jqGrid("getGridParam", "colModel");
for (var i = 0; i < cols.length; i++) {
if (cols[i].stype && cols[i].stype == "select" && cols[i].searchoptions && cols[i].searchoptions.buildSelect && $.isFunction(cols[i].searchoptions.buildSelect)
&& !cols[i].searchoptions.dataUrl && !cols[i].searchoptions.value) {
cols[i].searchoptions.value = cols[i].searchoptions.buildSelect(null);
}

このコードは、バージョン 4.3 (4.3.1 より前のバージョン) で問題なく動作していました。問題の原因は不明ですが、ドロップダウンが空白になっています。どんな助けでも大歓迎です!

4

1 に答える 1

2

使用するコードを投稿していないbuildSelectため、コードが失敗する理由を説明するのは困難です。私がほとんど理解していないのは、なぜそんなに複雑なコードを持っているのかということです。列のIsActiveタイプがブール値であることがわかっていて、「はい」と「いいえ」の値を持つドロップダウンとして高度な検索ダイアログに表示し、グリッドに表示し、編集中にチェックボックスとして表示する場合は、次の操作を実行できます。

{ name: "IsActive", template: myCheckboxTemplate }

mytemplateCheckboxあなたがのように定義する場所

var myCheckboxTemplate = {
        formatter: "checkbox", align: "center", width: 20,
        edittype: "checkbox", editoptions: { value: "1:0" },
        stype: "select", searchoptions: { sopt: ["eq", "ne"], value: "1:Yes;0:No" }
    };

私が永続的に使用する説明されたアプローチは、非常にうまく機能します。上記のコードとの唯一の違いは、"checkbox" の代わりに"clickableCheckbox"フォーマッターを使用していることです。必要に応じて、ここからダウンロードできます。

于 2012-05-11T15:28:11.997 に答える