6

JQGrid の複数選択では、複数選択または単一選択のみが許可され、シフト機能は、シフト選択に期待するものではありません。また、複数選択のコンボボックスが必要なのも好きではありません。

複数選択に使用できる他のソリューションは何ですか?

4

1 に答える 1

27

[2011 年 10 月] 4.0 API を使用するように更新し、シフト選択のバグを修正し、選択ループを簡素化しました。4.2.0 でテスト済み。


私のように、jqgrid で適切な複数選択が必要な場合 - ctrl は一度に 1 つの行を選択し、select は複数の行を選択し、選択をクリアせずに 1 行を選択します - あなたはそれを見つけました。

まず最初に:multiselect: trueグリッド定義で設定します(他の複数選択オプションは設定しませんでした)

次へ:gridComplete: function () {}セット内grid.jqGrid('hideCol', 'cb');- チェックボックスが不要な場合は非表示にします。

最後に:本編

beforeSelectRow: function (rowid, e) {
    if (!e.ctrlKey && !e.shiftKey) {
        $("#grid").jqGrid('resetSelection');
    }
    else if (e.shiftKey) {
        var initialRowSelect = $("#grid").jqGrid('getGridParam', 'selrow');
        $("#grid").jqGrid('resetSelection');

        var CurrentSelectIndex = $("#grid").jqGrid('getInd', rowid);
        var InitialSelectIndex = $("#grid").jqGrid('getInd', initialRowSelect);
        var startID = "";
        var endID = "";
        if (CurrentSelectIndex > InitialSelectIndex) {
            startID = initialRowSelect;
            endID = rowid;
        }
        else {
            startID = rowid;
            endID = initialRowSelect;
        }

        var shouldSelectRow = false;
        $.each($("#grid").getDataIDs(), function(_, id){
            if ((shouldSelectRow = id == startID || shouldSelectRow)){
              $("#grid").jqGrid('setSelection', id, false);
            }
            return id != endID;                        
        });
    }
    return true;
}

終わり- 助けてくれることを願っています

于 2010-11-15T16:59:51.820 に答える