Ich habe ein Slick-Grid mit einem benutzerdefinierten Auswahlmodell sowie einem benutzerdefinierten Checkbox-Auswahl-Plugin implementiert. Ich habe auch Kontrollkästchen auf Gruppenebene hinzugefügt, um das Umschalten der Auswahl auf der obersten Ebene zu ermöglichen. Eine meiner Anforderungen ist, dass reduzierte Gruppierungen weiterhin über alle Kontrollkästchen für Gruppierungen auf übergeordneter Ebene ausgewählt werden können.
Mein Stolperstein scheint zu sein, dass ich nicht herausfinden kann, wie Zeilen ausgewählt werden sollen, die derzeit in der Gruppe nicht sichtbar sind. Das glatte Raster verwaltet den Satz visuell ausgewählter Elemente, während die Rasterdatenansicht den vollständigen Satz ausgewählter Elemente verwaltet, ob sichtbar oder nicht. Ich kann jedoch nicht herausfinden, wie Daten übertragen werden, wenn ich auf das Kontrollkästchen Gruppe einer reduzierten Zeile klicke.
Ich konfiguriere mein Grid wie folgt:
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 , um benutzerdefinierte Plug - In zu lange hier schließen
Insbesondere wenn Sie in Zeile sehen 57
von slick.checkboxselectionmodel
:
$.each(dataItem.rows, function(index, groupRow) {
var groupRowIndex = _self._grid.getData().getRowById(groupRow.id);
if (groupRowIndex) {
selection.push(groupRowIndex);
}
});
groupRowIndex wird niemals für ausgeblendete Zeilen aufgelöst und wird daher niemals ausgewählt. Ich habe versucht, die Gruppe beim Klicken zu erweitern und dann die Zeilen aufzulösen. Dies funktioniert, aber wenn die Gruppe anschließend reduziert wird, werden die falschen Zeilen im Raster ausgewählt.
Jede Hilfe wäre sehr dankbar!
einige Notizen:
- Wenn ich eine Zeile auswähle und ihre Gruppe reduziere, behält das Element seine Auswahl bei
- Es gibt einen anderen Zweig des Slick-Grids, der eine ebenso nicht funktionierende Implementierung der Gruppenauswahl aufweist