グループレベルの選択によるSlickGridマルチレベルグループ化


10

現在のグリッドのステータス

カスタム選択モデルとカスタムチェックボックス選択プラグインを備えた滑らかなグリッドを実装しました。また、グループレベルのチェックボックスを追加して、トップレベルでの選択の切り替えを可能にしました。私の要件の1つは、折りたたまれたグループ化が親レベルのグループ化チェックボックスを介して引き続き選択可能であることです。

私の障害は、現在グループに表示されていない行を選択する方法を理解できないことです。滑らかなグリッドは視覚的に選択されたアイテムのセットを保持し、グリッドデータビューは選択されたアイテムの完全なセットを表示または非表示に維持します。しかし、折りたたまれた行のグループチェックボックスをクリックしたときにデータにパイプする方法がわかりません。

私はグリッドを次のように構成しています:

let checkboxSelectionModel = new Slick.CheckboxSelectionModel();
this.grid.setSelectionModel(checkboxSelectionModel);

this.grid.registerPlugin(new Slick.Data.GroupItemMetadataProvider());

let onSelectedRowIdsChanged = this.dataProvider.syncGridSelection(this.grid, true, true);

onSelectedRowIdsChanged.subscribe(
  function(e: any, args: any)
    {
      //business logic stuff                    
    }
  );

let groupedCheckboxSelector = new Slick.GroupedCheckboxSelectColumn({
  cssClass: "slick-cell-checkboxsel",
  onSelectedRowIdsChangedHandler: onSelectedRowIdsChanged
});

let columns = this.grid.getColumns();
columns.unshift(groupedCheckboxSelector.getColumnDefinition());
this.grid.setColumns(columns);

this.grid.registerPlugin(groupedCheckboxSelector);

ここに含まれるように、あまりにも長い間、カスタムプラグインにGIST あなたがラインを見れば、具体的57slick.checkboxselectionmodel

$.each(dataItem.rows, function(index, groupRow) {
  var groupRowIndex = _self._grid.getData().getRowById(groupRow.id);
    if (groupRowIndex) {
      selection.push(groupRowIndex);
    }
});

groupRowIndexは非表示の行では解決されないため、選択されることはありません。クリックしたときにグループを展開し、行を解決しようとしましたが、機能しましたが、後でグループを折りたたむと、グリッドで間違った行が選択されました。

どんな助けでも大歓迎です!

いくつかのメモ:


2
脂肪の賞金をできるだけ早く上げます
ジュリアン

1
これには未解決の問題#165があり、あなたや他の誰もが6pacフォークでその問題の修正を提供するだけで役立つと思います。これはコミュニティからの寄稿によるオープンソースプロジェクトであるため、寄稿があれば何年にもわたってこのライブラリの改善に役立ちます。
ギスコーディング

回答:


1

更新されたプラグインの要点

私が確信している機能的なソリューションは、同様の動作を求める人を正しい道に導くことができますが、これらのプラグインのどちらが独立してうまく機能するかはわかりません。私の要件の1つは、行のチェックボックスでのみ行を選択できるようにすることでした。

一つの問題(私は簡単に改善できると確信しています)は、グループレベルのチェックボックスをグループフォーマット演算子で定義する必要があることです。

私の問題の主な解決策は、グループレベルの選択/選択解除を行うときにすべての折りたたまれたグループを展開し、選択/選択解除ルーチンを実行してから、以前に展開されたグループを折りたたむことでした

編集:

グリッドに大量のデータ(1万行)がある場合、これは失敗します。賞金で再開。

多くのグループで問題が発生するため、展開と折りたたみを行う必要があるというパフォーマンスへの影響のようです。


1
@AmerllicAこの回答は時期尚早で、大規模なデータセットでは機能しません
Julien

1
@AmerllicA賞金のためにこれを好きになるのは非倫理的であるだけでなく、実際にはOPはこの回答が投稿された後に賞金を開始しました。これは、OPがこの回答で望んだ結果を得られなかったためです。だから、あなたが稼いでいない賞金のためにこのように物乞いをするのをやめて、代わりに良い/より良い解決策を考え出す時間があれば、OPの問題を手伝ってみてください。
クリストスLytras

@ChristosLytras、ヒントをありがとう、コメントをすぐに削除します。
AmerllicA

@ChristosLytrasも同じことを考えたので、それ以上のことは言えませんでした
Islam Elshobokshy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.