我正在使用 GWT 并有一个按钮,单击该按钮应过滤 CellTable 中显示的数据,然后隐藏一些列。
filterButton.addClickHandler(new ClickHandler() {
public void onClick (ClickEvent event) {
//some working code here to get the minimum and maximum
filter(min, max);
hideCols();
}
});
我的问题就在这里。我发现(来自https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCellWidgets#celllist) ListDataProvider 将 Celltable 绑定到我的列表,并且对列表的任何更改都将反映在视图中。视图在当前事件块的末尾更新,这导致了我的问题。我在当前事件块中调用 hideCols() 并隐藏列,但据我所知,视图在退出块时更新,并且重新绘制列。ListDataProvider 完全完成后,有什么方法可以让 hideCols() 运行?
filter(int min, int max) {
for (SiteInfo site : displayedList)
if (site.num_zones >= min && site.num_zones <= max)
filteredList.add(site);
dataProvider.getList().clear();
dataProvider.getList().addAll(filteredList);
siteTable.setRowCount(filteredList.size());
}
最后是 hideCols() 函数。我知道它可以正常工作,因为我在代码的其他地方成功地调用了它。第一行隐藏列标题,第二行负责相应列的行。
private native void hideCols()/*-{
$wnd.jQuery("span.toHide").parent().hide();
$wnd.jQuery(".toHide").hide();
}-*/;
任何帮助将非常感激。