Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top