0

最近、jqgridを3.8.2から4.3.1に更新しました。これは、検索テンプレートを使用できるようにし、利用可能なすべてのバグ修正が確実に行われるようにするためです。ただし、新しいバージョンを以前のバージョンと同じように動作させることができるかどうかを確認したい2つの変更点があります。

高度な検索を使用し、グリッドの上に固定された検索ダイアログを常に表示するようにサイトを構成しました。

  1. 以前のバージョンでは、既存のフィルターの横にあるプラスボタンを選択して、新しいフィルターを追加できました。この+ボタンを使用すると、新しく作成されたフィルターに既存のフィルターと同じオプションが設定されます。

古い検索

新しい検索

  1. 以前のバージョンでは、検索ボックスからすべてのフィルターを削除できませんでした。ボックスにフィルターが1つしかない場合に「削除」をクリックしても、何も起こりませんでした。ユーザーが最後のフィルターコントロールをザッピングしないようにする方法が必要です。

すべてのフィルターが削除されました

4

1 に答える 1

4

2 つの別々の質問をまとめて投稿しました。他のユーザーが情報を見つけにくくなります。現在の質問は 2 つに分けたほうがよいでしょう。

それにもかかわらず、あなたの質問の最初の部分について、古い Searching Dialog の動作がjQuery.cloneの使用のためにそうであったことを説明したいだけです。この機能には多くのバグがあり、長い間修正されていませんでした。そのため、状況によっては検索ダイアログが正しく機能しませんでした。Searching Dialog の新しい実装では、問題を解決する唯一の安全な方法としてjQuery.cloneを明示的に使用しませんでした。検索ダイアログの新しいバージョンで見逃していた動作は、デフォルトで実装されました。新しい検索ダイアログには対応するコードはありませんが、自分で書くことができます。ほとんどの場合、 afterRedrawコールバックでカスタム コードを記述する必要があります。

jqGrid サポートが強力なオプションになったことを考慮する必要がありmultipleGroup: trueます。したがって、おそらく同じグループの別のコントロールから選択をコピーする必要があります。

ここに画像の説明を入力

2 番目の質問について:

回答には、バインドを解除するというアイデアを説明するデモが含まれていclickます。おそらく、それが唯一のボタンである場合にのみ、「ルー​​ルの削除」ボタンのバインドを解除するか、非表示にすることをお勧めします。

オプションを使用しない場合はmultipleGroup: true、次のことを試すことができます

$.extend($.jgrid.search, {
    multipleSearch: true,
    overlay: 0,
    afterRedraw: function () {
        // don't permit to remove the last rule
        $('input.delete-rule:first',this).unbind('click').hide();
    }
});

使用multipleGroup: trueの場合、おそらく別のコードの方が良いでしょう

$.extend($.jgrid.search, {
    multipleSearch: true,
    multipleGroup: true,
    overlay: 0,
    afterRedraw: function () {
        // don't permit to remove the last rule
        var $delRules = $('input.delete-rule', this);
        if ($delRules.length === 1) {
            $delRules.unbind('click').hide();
        }
    }
});
于 2012-04-12T20:49:37.440 に答える