如何在没有表重置排序顺序的情况下重新加载Vaadin中的父视图

时间:2016-04-28 07:33:51

标签: vaadin vaadin7

我在Vaadin中使用PagedFilterTable来管理分页。加载默认页面时,我设置了这样的东西 - 我包括按某个字段排序:

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

这样在页面加载时就会发生这种情况。在我提交新条目(通过新的弹出窗口添加条目)之后,表格获得了新行,但是在弹出窗口关闭后,表格在视图中丢失了它的排序顺序,因此不再保留排序。问题是我不知道如何从该弹出窗口获取该表元素并再次设置排序。为什么表正在更新,我看到它,并排序不做?问题更大,因为我在单独的文件中有两个窗口,在我看来,如果不修改逻辑,我不能轻易地抓取表元素,因为我在另一个窗口。

如何重新加载表以使排序保持不变?

我在提交后设法做到了这一点:

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

有了它可行,但我不满意。在那行代码之后,一切都重新加载(意味着所有查询再次执行)。结果很好,但我不想在提交页面的整个重新加载后发生(也因为我的其他按钮都没有重新加载)。所以我只想在父窗口中重新加载表。

如何从外部窗口抓取表格对象,例如将其更改为立即更正?

我认为需要写这样的东西:

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

或者更好的问题,在通过新窗口插入新条目后,如何管理表格排序仍然相同?

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。在windowCloseListener的父窗口中,我刚刚添加了:

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