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 57
z 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:
- jeśli zaznaczę wiersz i zwinę jego grupę, element zachowa swój wybór
- istnieje inna gałąź gładkiej siatki, która ma równie niefunkcjonalną implementację wyboru grupy
źródło
Odpowiedzi:
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.
źródło