Wielopoziomowe grupowanie SlickGrid z wyborem poziomu grupy

10

aktualny stan sieci

Zaimplementowałem gładką siatkę z niestandardowym modelem wyboru, a także niestandardową wtyczką wyboru pola wyboru. Dodałem również pola wyboru na poziomie grupy, aby umożliwić przełączanie wyboru na najwyższym poziomie. Jednym z moich wymagań jest to, że zwinięte grupy można nadal wybierać za pomocą dowolnych pól wyboru grupowania na poziomie nadrzędnym.

Moim problemem jest to, że nie mogę wymyślić, jak wybrać wiersze, które nie są obecnie widoczne w grupie. Zręczna siatka zachowuje zestaw wizualnie wybranych elementów, podczas gdy widok danych siatki zachowuje pełny zestaw wybranych elementów, widocznych lub nie. Nie mogę jednak wymyślić, jak podłączyć do danych po kliknięciu pola wyboru grupy zwiniętego wiersza.

Konfiguruję moją siatkę tak:

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 do niestandardowych wtyczek, zbyt długo, by zawrzeć tutaj szczególności, jeśli spojrzeć na linii 57z slick.checkboxselectionmodel:

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

groupRowIndex nigdy nie jest rozpoznawany dla ukrytych wierszy, więc nigdy nie zostanie wybrany. Po kliknięciu próbowałem rozwinąć grupę, a następnie rozwiązać wiersze, co działa, ale gdy grupa zostanie zwinięta, w wierszu zaznaczono niewłaściwe wiersze.

każda pomoc byłaby bardzo mile widziana!

kilka notatek:

Julien
źródło
2
jak najszybciej wystawię grubą nagrodę
Julien
1
Jest na to otwarty problem nr 165 i myślę, że pomogłoby to, że ty lub ktokolwiek inny po prostu naprawicie ten problem w rozwidleniu 6pac. Jest to projekt Open Source z udziałem społeczności, więc wszelkie wkłady pomagają ulepszyć tę bibliotekę przez lata.
ghiscoding

Odpowiedzi:

1

Lista zaktualizowanych wtyczek

Funkcjonalne rozwiązanie, które jestem pewien, może postawić każdego, kto szuka podobnego zachowania na właściwej ścieżce, jednak nie jestem pewien, jak dobrze każda z tych wtyczek działałaby niezależnie. jednym z moich wymagań było zezwolenie na wybór wiersza tylko za pomocą pola wyboru wiersza.

jedną z gotcha (jestem pewien, że można to łatwo poprawić) jest to, że pole wyboru na poziomie grupy nadal musi być zdefiniowane w operatorze formatu grupy

głównym rozwiązaniem mojego problemu było rozwinięcie wszystkich zwiniętych grup podczas dokonywania zaznaczeń / odznaczeń na poziomie grupy, wykonywanie dowolnych procedur zaznaczania / odznaczania, a następnie zwijanie wcześniej rozwiniętych grup

EDYTOWAĆ:

Nie udaje się to, gdy siatka zawiera duże ilości danych (10 tys. Wierszy). Ponowne otwarcie z nagrodą.

Wygląda na to, że wydajność spowodowała konieczność rozwijania i zwijania tak wielu grup, które powodują problemy.

Julien
źródło
1
@AmerllicA ta odpowiedź była przedwczesna i nie działa z dużymi zestawami danych
Julien
1
@AmerllicA nie tylko nieetyczne jest podobanie się tej nagrody za jakąś nagrodę, ale tak naprawdę OP rozpoczął nagrodę po opublikowaniu tej odpowiedzi, a to dlatego, że OP nie uzyskał wyników, których chciał z tą odpowiedzią. Więc przestań błagać w ten sposób o nagrodę, której nie zarobiłeś, a zamiast tego spróbuj pomóc OP w jego problemie, jeśli masz czas na wymyślenie dobrego / lepszego rozwiązania.
Christos Lytras
@ChristosLytras, natychmiast usunę mój komentarz, dzięki za podpowiedź.
AmerllicA
@ChristosLytras myślał o tym samym, nie mógłbym tego lepiej powiedzieć
Islam Elshobokshy