Como selecionar todas as linhas na tabela vaadin?
-
23-09-2019 - |
Pergunta
OI,
Estou tendo uma caixa de seleção e uma tabela e tabela tem 10 linhas. Se o usuário selecionar a caixa de seleção, todas as 10 linhas da tabela vaadin deverão ser selecionadas, mas não sei como obter essa funcionalidade. como conseguir isso?Se possível, forneça-me algum trecho de código.
Solução
Table.getValue()
pega o ID de um único item ou uma coleção de vários IDs de item, e Table.getItemIds()
retorna os IDs de todos os itens da tabela.Isso significa que você pode selecionar todos os itens da tabela simplesmente:
yourTable.setValue(yourTable.getItemIds());
Observe que isso causará problemas de desempenho se houver muitos itens no contêiner da tabela.Deve funcionar em um caso simples como o seu.
Outras dicas
Certifique -se de que a tabela tenha o YourTable.SetMultisElect (true) e, em seguida, apenas itera o ID do YourTable.getItemids () e ligue para o YourTable.Select (ID) para todos os IDs. Esta é uma maneira.
No Vaadin 7, quando você tem tabela com fonte de dados de contêiner, pode fazer isso:
table.setValue(container.getItemIds());
Em Vaadin 6 funciona isso para mim:
public void selectAll() {
int size = table.getItemIds().size();
for(int i = 0; i < size; i++) {
table.select(i);
}
table.requestRepaint();
}
E, claro, nas duas versões de Vaadin, não se esqueça dessas linhas:
table.setSelectable(true);
table.setMultiSelect(true);
Você pode simplesmente fazer isso por
Table table = new Table();
table.setValue(table.getItemIds());
Não deve causar problemas de desempenho, em vez disso, você tem algumas centenas de linhas. Caso você tenha - arquitetura ruim.
Além disso, você pode apenas iterar através da lista (Vaadin faz o mesmo)Aqui Você pode encontrar como reverter a lista selecionada usando iteração simples. Em duas palavras:
Collection<Object> toSelect = new ArrayList<Object>(); for (Iterator<?> it = simpleTable.getItemIds().iterator(); it.hasNext(); ) { Object next = it.next(); if (!((Collection<?>) simpleTable.getValue()).contains(next)) toSelect.add(next); } simpleTable.setValue(toSelect);