こんにちは、
チェックボックスが1つとテーブルが1つあり、テーブルには10行あります。ユーザーがチェックボックスを選択すると、vaadinテーブルの10行すべてを選択する必要がありますが、この機能を実現する方法がわかりません。誰か教えてくださいこれを達成する方法は?可能であれば、コード スニペットを提供してください。
こんにちは、
チェックボックスが1つとテーブルが1つあり、テーブルには10行あります。ユーザーがチェックボックスを選択すると、vaadinテーブルの10行すべてを選択する必要がありますが、この機能を実現する方法がわかりません。誰か教えてくださいこれを達成する方法は?可能であれば、コード スニペットを提供してください。
Table.getValue()
単一のアイテムの ID または複数のアイテム ID のコレクションのいずれかを取得Table.getItemIds()
し、テーブル内のすべてのアイテムの ID を返します。これは、次の方法でテーブル内のすべての項目を簡単に選択できることを意味します。
yourTable.setValue(yourTable.getItemIds());
テーブルのコンテナに多くのアイテムがある場合、これによりパフォーマンスの問題が発生することに注意してください。ただし、あなたのような単純なケースでは機能するはずです。
テーブルに yourTable.setMultiSelect(true) があることを確認してから、yourTable.getItemIds() から取得した ID を反復処理し、すべての ID に対して yourTable.select(id) を呼び出します。これは一つの方法です。
あなたは単にそれを行うことができます
Table table = new Table();
table.setValue(table.getItemIds());
数百の行がある代わりに、パフォーマンスの問題を引き起こすべきではありません。あなたが持っている場合 - 悪いアーキテクチャ。
また、リストを反復処理することもできます (Vaadin も同じ ことを行います) 。一言で言えば:
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);