2016-04-28 73 views
0

我在Vaadin中使用PagedFilterTable來管理分頁。當加載默認的頁面,我已是這樣的 - 我包括一些字段排序:如何重新加載Vaadin父視圖沒有表重置排序順序

if(this.sortField != null){ 
    table.setSortContainerPropertyId(this.sortField); 
    table.setColumnWidth(this.sortField, 80); 
    table.setSortAscending(true); 
    table.sort(); 
} 

所以當這種情況發生的頁面加載,這是罰款。在我提交新條目(條目正在通過新的彈出窗口添加)之後,表格會獲取新行,但在彈出關閉後,表格會在視圖中丟失它的排序順序,因此排序不再受到保護。問題是我不知道如何從該彈出窗口到達該表格元素並再次設置排序。爲什麼桌子正在更新,我看到它,並排序doesen't?問題是更大的,因爲我有兩個窗口在單獨的文件,在我看來,我不能容易地抓住表格元素,而不修改邏輯,因爲我在另一個窗口。

如何重新加載表以便排序保持不變?

我成功做到這一點後提交:

getUI().getPage().reload(); 

有了它的工作原理,但我很不滿意。在該行代碼之後,所有事情都會重新加載(意味着所有查詢都會再次執行)。結果是好的,但我不想在提交整個頁面重新加載後發生(也因爲我的其他按鈕沒有重新加載)。所以我只想在父窗口重新加載表格。

如何從外部窗口抓取表格對象,例如將其設置爲即時正確的更改?

像這樣的事情,我想被寫入需求:

getParent().getUI().setImmediate(true); 

或者更好的問題,如何通過新窗口插入新條目後如何管理表排序仍然相同?

+0

Page reload做的太多了。通常你只需將新項目添加到容器中,然後表格會自動通知新數據並顯示此信息 –

+0

真的不知道如何做到這一點。 – DarioBB

+0

如何填充表格? (通常容器處理這個) –

回答

0

我設法解決它。在剛剛添加的windowCloseListener的父窗口中,我剛添加:

myTable.refreshTable(data); 
myTable.sortTable(); // my custom method that was Invoked on the page load too