Intelligent GridDocumentação em português

Seleção

selection: { mode: 'multiple', checkbox: true, selectOnClick: false }  // padrão
selection: { mode: 'single' }                                         // botões de rádio
selection: false                                                      // o mesmo que { mode: 'none' }
Opção Padrão Descrição
mode 'multiple' 'single', 'multiple' ou 'none'
checkbox true Mostra uma coluna de checkbox (rádio no modo single); a caixa do cabeçalho seleciona todas as linhas filtradas
selectOnClick false true: clicar em qualquer célula também seleciona a linha dela. Por padrão, um clique seleciona a célula, e as linhas são selecionadas com o checkbox, com Espaço ou com Ctrl+A

Mouse e teclado

Gesto Multiple Single
Clicar no checkbox alterna a linha seleciona esta linha
Shift + clique em um checkbox seleciona as linhas a partir da última clicada
Espaço alterna a linha ativa; com um intervalo de células, seleciona as linhas dele seleciona a linha ativa
Ctrl/Cmd + A seleciona todas as linhas filtradas (e todas as células)

Com selectOnClick: true, clicar em uma célula de dados funciona como clicar no checkbox, e Ctrl/Cmd + clique alterna. Shift + setas e arrastar selecionam intervalos de células, não linhas.

A seleção é mantida ao ordenar e filtrar (linhas ocultas continuam selecionadas). Excluir linhas as remove da seleção.

API

grid.select(['1', '2']);                 // substitui a seleção (o modo multiple a mantém com { append: true })
grid.select(['3'], { append: true });
grid.deselect(['1']);
grid.selectAll();                        // todas as linhas filtradas
grid.clearSelection();
grid.getSelectedIds();                   // ['2', '3']
grid.getSelected();                      // cópias das linhas
grid.getRows('selected');                // o mesmo que getSelected()

grid.on('selectionChange', e => console.log(e.detail.ids, e.detail.rows));

Os ids são strings (os valores de idField são convertidos com String()).

Ações em lote

navbar: {
    delete: true,   // botão "Delete", habilitado quando há algo selecionado
    items: [{
        label: 'Mark as paid',
        disabled: grid => grid.getSelectedIds().length === 0,
        onClick: grid => grid.getSelectedIds().forEach(id => grid.updateRow(id, { paid: true }))
    }]
}

exportCSV({ rows: 'selected' }) e exportXLSX({ rows: 'selected' }) exportam apenas a seleção. Ctrl+C copia as linhas selecionadas como texto separado por tab (cole direto no Excel), a menos que um intervalo de mais de uma célula esteja selecionado: nesse caso, o intervalo é copiado.

Editar esta página no GitHub