Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GWT中执行事件块后调用函数_Gwt - Fatal编程技术网

在GWT中执行事件块后调用函数

在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

我正在使用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();
    }
});
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()
,以确保。