Как выделить все строки в таблице vaadin? - PullRequest
4 голосов
/ 30 марта 2010

HI

У меня есть один флажок, и у одной таблицы и таблицы есть 10 строк. Если пользователь установит флажок, тогда нужно будет выбрать все 10 строк в таблице vaadin, но я не знаю, как добиться этой функциональности. Может кто-нибудь подскажет как этого добиться? Если возможно, предоставьте мне фрагмент кода.

Ответы [ 4 ]

10 голосов
/ 03 апреля 2010

Table.getValue() принимает либо идентификатор отдельного элемента, либо набор из нескольких идентификаторов элементов, а Table.getItemIds() возвращает идентификаторы всех элементов в таблице.Это означает, что вы можете выбрать все элементы в таблице просто:

yourTable.setValue(yourTable.getItemIds());

Обратите внимание, что это вызовет проблемы с производительностью, если в контейнере таблицы много элементов.Должно работать в таком простом случае, как ваш.

1 голос
/ 07 июля 2014

В Vaadin 7, когда у вас есть таблица с источником данных контейнера, вы можете сделать это:

table.setValue(container.getItemIds());

В Vaadin 6 это работает для меня:

public void selectAll() {
    int size = table.getItemIds().size();
    for(int i = 0; i < size; i++) {
        table.select(i);
    }
    table.requestRepaint();
}

И, конечно, вВерсии Vaadin не забывайте в этих строках:

table.setSelectable(true);
table.setMultiSelect(true);
1 голос
/ 01 апреля 2010

Убедитесь, что таблица имеет yourTable.setMultiSelect (true), а затем просто итерируйте идентификатор, полученный из yourTable.getItemIds (), и вызовите yourTable.select (id) для всех идентификаторов. Это один из способов.

0 голосов
/ 04 декабря 2013

Вы можете просто сделать это,

Table table = new Table(); 
table.setValue(table.getItemIds());

Это не должно вызывать проблем с производительностью, вместо этого у вас есть несколько сотен строк. Если у вас - плохая архитектура.

Также вы можете просто перебирать список (Ваадин делает то же самое) Здесь вы можете найти, как отменить выбранный список, используя простую итерацию. В двух словах:

            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);
...