4

こんにちは、

チェックボックスが1つとテーブルが1つあり、テーブルには10行あります。ユーザーがチェックボックスを選択すると、vaadinテーブルの10行すべてを選択する必要がありますが、この機能を実現する方法がわかりません。誰か教えてくださいこれを達成する方法は?可能であれば、コード スニペットを提供してください。

4

4 に答える 4

10

Table.getValue()単一のアイテムの ID または複数のアイテム ID のコレクションのいずれかを取得Table.getItemIds()し、テーブル内のすべてのアイテムの ID を返します。これは、次の方法でテーブル内のすべての項目を簡単に選択できることを意味します。

yourTable.setValue(yourTable.getItemIds());

テーブルのコンテナに多くのアイテムがある場合、これによりパフォーマンスの問題が発生することに注意してください。ただし、あなたのような単純なケースでは機能するはずです。

于 2010-04-02T20:41:57.973 に答える
1

テーブルに yourTable.setMultiSelect(true) があることを確認してから、yourTable.getItemIds() から取得した ID を反復処理し、すべての ID に対して yourTable.select(id) を呼び出します。これは一つの方法です。

于 2010-04-01T07:39:13.947 に答える
0

あなたは単にそれを行うことができます

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);
于 2013-12-03T21:24:45.943 に答える