He implementado una cuadrícula pulida con un modelo de selección personalizado, así como un complemento de selección de casilla de verificación personalizado. También agregué casillas de verificación de nivel de grupo para permitir alternar la selección en el nivel superior. Uno de mis requisitos es que las agrupaciones contraídas todavía se pueden seleccionar a través de cualquier casilla de verificación de agrupación de nivel primario.
Mi obstáculo parece ser que no puedo entender cómo seleccionar filas que actualmente no están visibles en el grupo. La grilla pulida mantiene el conjunto de elementos visualmente seleccionados, mientras que la vista de datos de cuadrículas mantiene el conjunto completo de elementos seleccionados, visibles o no. Sin embargo, no puedo entender cómo canalizar los datos al hacer clic en la casilla de verificación de grupo de una fila contraída.
Estoy configurando mi grilla así:
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);
Lista de complementos personalizados, demasiado largos para incluirlos aquí.
Específicamente, si observa la línea 57
de slick.checkboxselectionmodel
:
$.each(dataItem.rows, function(index, groupRow) {
var groupRowIndex = _self._grid.getData().getRowById(groupRow.id);
if (groupRowIndex) {
selection.push(groupRowIndex);
}
});
groupRowIndex nunca se resuelve para filas ocultas, por lo que nunca se selecciona. Intenté expandir el grupo cuando hice clic, luego resolví las filas, lo que funciona, pero cuando el grupo se contrae después, se seleccionan las filas incorrectas en la cuadrícula.
Cualquier ayuda sería muy apreciada!
algunas notas:
- si selecciono una fila y contraigo su grupo, el elemento conserva su selección
- hay una rama diferente de la grilla elegante que tiene una implementación igualmente no funcional de la selección de grupo