1

私はJQGridをたくさん使ってきたので、みんなにお勧めします。私が本当に好きではない機能の1つは、ShiftやCtrlなどの特別なキーを使用せず、多くの制御を提供せず、チェックボックスを強制的に表示する組み込みの複数選択です。

次のように独自の複数選択を実装したいと思います。onSelectRow-shiftまたはctrlが保持されているかどうかを確認し、行IDを配列に追加して、グリッドで選択します。何も保持されていない場合は、配列をクリアし、新しい行IDを追加して、グリッドで選択します。

これは、キーが保持されているかどうかを確認するためにonSelectRowにイベントが必要なことを除いて、実装するのに十分簡単です。メインドキュメント自体にkeydownおよびkeyupイベントを添付したくない。

onSelectRow: function (id) {
            event=???
            if (!event.shiftKey && !event.ctrlKey) {

            }
            else {

            }
}

よろしく、バイロンコブ。

編集:解決策-

Olegsの入力に続いて、私は次のことを行いました。

  1. multiselect: trueグリッド定義で設定
  2. gridComplete設定してチェックボックスの列を非表示にしました$("#myGrid").jqGrid('hideCol', 'cb');
  3. 選択する前に自分でctrlキーをチェックし(multikey: "ctrlKey"を使用しない)、ctrlキーが押されていない場合は選択をクリアします。
  4. 後で必要に応じて選択配列を使用する-var SelectedRows = $("#myGrid").jqGrid('getGridParam', 'selarrrow');

beforeSelectRow: function (rowid, e) {
            if (!e.ctrlKey) {
                $("#myGrid").resetSelection();
            }
            return true;
        },
4

1 に答える 1

2

バージョン3.5.3以降、 jqGridは、必要なイベントがあり、前に呼び出されるbeforeSelectRowイベントをサポートしていますonSelectRow

おそらく、jqGridのマルチキーオプションの使用と「cb」という名前の疑似列の非表示

$("#mygrid").jqGrid('hideCol','cb');

(cb-コンボボックス、http: //www.trirand.com/blog/?page_id = 393 / help / multiselect-without-checkboxes-1 /を参照)は、jqGridで行選択の動作を実装するのに役立ちます。欲しいです。

更新$("#mygrid").jqGrid('getGridParam','selarrrow'):現在選択されているすべての行のIDの配列を取得するために使用できることもご存知だと思いますが、必ず情報も挿入します。

于 2010-09-07T09:40:53.467 に答える