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