2016-07-10 12 views
0

Vaadin:テーブルの内容を更新した後、選択した行を設定する必要があります。 私は、さまざまな顧客を含むコンボボックスを持っています。 さらに2つのテーブルがあり、最初はメインカテゴリを示し、セカンドはサブカテゴリを示します。 最初に、顧客は選択されず、メインカテゴリが表示されます。サブカテゴリは表示されません。Vaadinはテーブルの選択行を設定します

私は、カテゴリをクリックしてください(例えば、製品を言うことができます!)、サブカテゴリテーブルはappersとサブカテゴリーを示しています。 空である顧客を特定の顧客に変更すると、両方のテーブルがフィルタリングされますが、製品選択は失われます。前に選択したものに選択肢を設定する必要があります。

私はantoherクラスからSQL-コンテナオブジェクトとしてテーブルの内容を取得します。 getMainCatsメソッドの戻りは、このように作成され

mainCatTable = new Table(); 
... 
mainCatTable.setContainerDataSource(source.getMainCats()); 

//My Checkboxbutton 
Combobox custBox = new ComboBox(); 

//Get the customers from the Database 
custBox.setContainerDataSource(source.getCustomers()); 

custBox.setItemCaptionPropertyId("Customers"); 
custBox.addValueChangeListener(new ValueChangeListener() { 
    public void valueChange(ValueChangeEvent valueEvent) { 

//Here I need to store the old selection, before i update the mainCat table to a specific customer 
      mainCatTable.setContainerDataSource(source.getMainCats(currentCustomer)); 

//Here I need something to set the selected row to the previous value 
      subCatTable.setContainerDataSource(source.getSubCats()); 
      } 
}); 

SQL-コンテナは:

FreeformQuery subcatExtractionQuery = new FreeformQuery("select customerName from customers", connectionPool); 
return new SQLContainer(subcatExtractionQuery); 

問題があり、tはさまざまな方法を試してみましたが、それはうまくいきませんでした。 は、この私の試みだった: https://vaadin.com/forum/#!/thread/1819417/1819416 しかし、彼らはindexcontainerを使用しますが、私にはありません。

誰もがインデックスコンテナなしでこれを行う方法を説明できますか?

+0

「インデックスされていないコンテナ」はどのようなコントローラですか?あなたはこれについて少し具体的になりますか? – mico

+0

申し訳ありません、今私は情報を追加しました。これはあなたが意味することですか? – Tobi123

答えて

2

何/「選択」行セットを取得するために、テーブルの値を使用するでしょうか?

Object value = mainCatTable.getValue();  
mainCatTable.setContainerDataSource(source.getMainCats(currentCustomer)); 
mainCatTable.setValue(value); 
+0

私は似たようなことを試みましたが、成功しませんでした。 これは動作します - ありがとう! – Tobi123

+0

更新:残念なことに、これは常に厳選されたものではありません。それはidだけを取るからです。更新前に3番目の行が選択されている場合は、更新後に3番目の行が選択されます。しかし、コンテンツが変更される可能性があります(例:最初の行の新しいMaincat apper =>選択された古いものが4番目にあり、3番目が更新前です)ので、別のmainCatがテーブルの後に選択されます更新。だから、私は選択したwird/String(私にとっては問題ありません)とidを介して行を設定しないSETVALUEを読むことができるものが必要ですが、特定のStringに設定します。 – Tobi123

関連する問題