在GWT中执行事件块后调用函数
我正在使用GWT,并且有一个按钮,单击该按钮时,应该过滤显示在我的CellTable中的数据,然后隐藏一些列在GWT中执行事件块后调用函数,gwt,Gwt,我正在使用GWT,并且有一个按钮,单击该按钮时,应该过滤显示在我的CellTable中的数据,然后隐藏一些列 filterButton.addClickHandler(new ClickHandler() { public void onClick (ClickEvent event) { //some working code here to get the minimum and maximum filter(min, max); hi
filterButton.addClickHandler(new ClickHandler() {
public void onClick (ClickEvent event) {
//some working code here to get the minimum and maximum
filter(min, max);
hideCols();
}
});
private native void hideCols()/*-{
$wnd.jQuery("span.toHide").parent().hide();
$wnd.jQuery(".toHide").hide();
}-*/;
我的问题在这里。我发现(从)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
:用于使用或从单元格表添加类
要回答您的问题,您可以使用(或schedulederferred
,如果finally还不够晚)。您可以使用同步重画
但是在我看来,您应该修复您的hideCols
:用于使用或从单元格表添加类
要回答您的问题,您可以使用(或schedulederferred
,如果finally还不够晚)。谢谢您的回答。我最初使用的是refresh()
,但是列又回来了。flush()
有何不同?正如你提到的,我试着给专栏添加样式,但似乎什么也没发生。我能够从表中删除这些列,但是如果我再次需要它们,就无法将它们取回。我没有尝试使用Scheduler.get().schedulederferred
。我现在要做的是创建第二个表,其中只包含我不想隐藏的列,并根据需要切换它们的可见性。这不是一个很好的解决方案,但它正在工作。我对我的答案做了一些更正,并为该方法添加了指向javadocs的链接。这澄清了我指的是CellTable#flush()
,而不是ListDataProvider#flush()
。也可以使用insertColumn()
将列添加回原来的列;这应该会触发重画,但您可以调用单元格表上的redraw()
来确保。谢谢您的回复。我最初使用的是refresh()
,但是列又回来了。flush()
有何不同?正如你提到的,我试着给专栏添加样式,但似乎什么也没发生。我能够从表中删除这些列,但是如果我再次需要它们,就无法将它们取回。我没有尝试使用Scheduler.get().schedulederferred
。我现在要做的是创建第二个表,其中只包含我不想隐藏的列,并根据需要切换它们的可见性。这不是一个很好的解决方案,但它正在工作。我对我的答案做了一些更正,并为该方法添加了指向javadocs的链接。这澄清了我指的是CellTable#flush()
,而不是ListDataProvider#flush()
。也可以使用insertColumn()
将列添加回原来的列;这将触发重画,但您可以在单元格表上调用redraw()
,以确保。