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.

Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top