Implementei uma grade lisa com um modelo de seleção personalizado e um plug-in de seleção de caixa de seleção personalizada. Também adicionei caixas de seleção no nível do grupo para permitir a seleção no nível superior. Um dos meus requisitos é que os agrupamentos recolhidos ainda possam ser selecionados por qualquer caixa de seleção de agrupamento no nível pai.
Minha pedra de tropeço parece ser que não consigo descobrir como selecionar linhas que não estão atualmente visíveis no grupo. A grade lisa mantém o conjunto de itens selecionados visualmente, enquanto a visualização de dados das grades mantém o conjunto completo de itens selecionados, visíveis ou não. No entanto, não consigo descobrir como inserir dados ao clicar na caixa de seleção do grupo de uma linha recolhida.
Estou configurando minha grade assim:
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 os plug-ins personalizados, muito tempo para incluir aqui
Especificamente, se você observar a linha 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 é resolvido para linhas ocultas e, portanto, nunca é selecionado. Tentei expandir o grupo quando clicado e depois resolver as linhas, o que funciona, mas quando o grupo é recolhido posteriormente, as linhas erradas são selecionadas na grade.
Qualquer ajuda seria muito apreciada!
algumas notas:
- se eu selecionar uma linha e recolher seu grupo, o item manterá sua seleção
- existe um ramo diferente da grade lisa que tem uma implementação igualmente não funcional da seleção de grupos