Kumar
Kumar

Reputation: 5469

How to select all row in vaadin table?

HI,

I am having one check box and one table and table has 10 rows .If 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.

Upvotes: 4

Views: 13071

Answers (4)

Firzen
Firzen

Reputation: 2095

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

Upvotes: 1

Alex
Alex

Reputation: 33

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

Upvotes: 0

hezamu
hezamu

Reputation: 1584

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.

Upvotes: 10

Jonas Granvik
Jonas Granvik

Reputation: 935

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.

Upvotes: 1

Related Questions