我在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);
或者更好的问题,在通过新窗口插入新条目后,如何管理表格排序仍然相同?
答案 0 :(得分:0)
我设法解决了这个问题。在windowCloseListener的父窗口中,我刚刚添加了:
myTable.refreshTable(data);
myTable.sortTable(); // my custom method that was Invoked on the page load too