3

DataSource が IndexedContainer に設定されているテーブルがあります。また、テーブルで複数選択を有効にしています。質問は、選択したすべての値を取得するにはどうすればよいですか..おそらく配列としてですか?

私のIndexedContainer:

private void populateAnalyteTable () {

        Analyte[] analytes = Analyte.getAnalytes();

        for (Analyte analyte : analytes) {

            Object id = ic_analytes.addItem();
            ic_analytes.getContainerProperty(id, "ID").setValue(analyte.getId());
            ic_analytes.getContainerProperty(id, "Analyte Name").setValue(analyte.getAnalyteName());

        }

        // Bind indexed container to table
        tbl_analytes.setContainerDataSource(ic_analytes);

    }

私が最終的に取得しようとしているのは、Analyte オブジェクトの配列です

4

4 に答える 4

4

なぜ IndexContainer を使用したいのですか? BeanItemCotainer を使用しないのはなぜですか? 以下のコードのスニペットを見つけてください

table.setMultiSelect(true);
BeanItemContainer<Analyte> container = new BeanItemContainer<Analyte>(Analyte.class);
container.addAll(Arrays.asList(Analyte.getAnalytes()));
table.setContainerDatasource(container);
// Add some Properties of Analyte class that you want to be shown to user
table.setVisibleColumns(new Object[]{"ID","Analyte Name"});


//User selects Multiple Values, mind you this is an Unmodifiable Collection
Set<Analyte> selectedValues = (Set<Analyte>)table.getValue();

問題が解決しない場合はお知らせください

于 2014-11-18T05:37:32.573 に答える
1

MultiSelect をサポートするすべての vaadin オブジェクトは、選択された項目のセットを返します。

https://www.vaadin.com/api/com/vaadin/ui/AbstractSelect.html#getValue%28%29

これの欠点は、選択したアイテムを「実際の」順序で (画面に表示されるように) 必要な場合は、セットからコンテナーまでそれらを見つける必要があることです。

于 2014-11-14T17:54:14.020 に答える
0

table.getValue()あなたが探しているものです。このメソッドは、Object(テーブルが単一選択の場合) またはSet<Object>(複数選択の場合) 選択された項目の ID を提供します。ランタイム タイプはランタイム ID タイプに依存しますが、値が必要ない場合はObject. 分析物を配列として探している場合は、次のことができます

@SuppressWarnings("unchecked")
Set<Object> selectedIds = (Set<Object>) tbl_analytes.getValue();
List<Analyte> listAnalytes = new ArrayList<Analyte>(); 
for (Object id : selectedIds) {
    listAnalytes.get(tbl_analytes.getItem(id));
}
listAnalytes.toArray();

このアプローチは、Vaadin で使用できるすべての標準コンテナーで機能することに注意してください。よろしく!

編集:実際に .getValue() が返すものは、使用されているコンテナによって異なります。ほとんどの場合、それは ID です。

于 2014-11-21T07:38:27.513 に答える