开发者

How to select all row in vaadin table?

开发者 https://www.devze.com 2022-12-25 16:18 出处:网络
HI, I am having one check box and one table and table has 10 rows .If 开发者_StackOverflow社区user selects the check box then all the 10 rows in the vaadin table should need to select but i don\'t kn

HI,

I am having one check box and one table and table has 10 rows .If 开发者_StackOverflow社区user selects the check box then all the 10 rows in the vaadin table should need to select but i don't know how to achieve this functionality.Can anyone tell me how to achieve this? If possible provide me some code snippet.


Table.getValue() takes either the ID of a single item or a collection of several item ID's, and Table.getItemIds() returns the ID's of all items in the table. This means that you can select all items in the table simply by:

yourTable.setValue(yourTable.getItemIds());

Note that this will cause performance troubles if there are a lot of items in the table's container. Should work in a simple case like yours, though.


Make sure the table has yourTable.setMultiSelect(true) and then just iterate the ID's got from yourTable.getItemIds() and call yourTable.select(id) for all id's. This is one way.


In Vaadin 7 when you have table with container data source you can do this:

table.setValue(container.getItemIds());

In Vaadin 6 works this for me:

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

And of course in both Vaadin versions don't forget to these lines:

table.setSelectable(true);
table.setMultiSelect(true);


You can simply do it by

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

It should not cause performance troubles instead you have few hundreds rows. In case you have - bad architecture.

Also you can just iterate through the list (Vaadin does the same) Here you can find how to reverse selected list using simple iteration. In two words:

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号