GWT 2.4 CellTable问题

时间:2011-09-30 14:39:00

标签: java gwt

从GWT 2.3升级到2.4导致了我的一类客户端异常,它扩展了CellTable。没有功能损失,但例外是持续的发展烦恼。

com.google.gwt.core.client.JavaScriptException:(TypeError):this.insertBefore不是函数

我已经确定了导致这种情况的行,尽管在表稍后呈现之前不会抛出异常。在行更改处理程序中,当CellTable中没有行时,MyCellTable会删除标题元素。这是一些示例代码,它导致2.4中的异常,但不是2.3。

CellTable<String> table = new CellTable<String>();

table.addColumn(new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object;
        }
    }, "Col");

List<String> list = new ArrayList<String>();
list.add("abc");
list.add("def");
table.setRowData(list);

NodeList<Element> els = table.getElement().getElementsByTagName("THEAD");
if (els.getLength() == 0) {
    return;
}

final Element e = els.getItem(0);
e.removeFromParent();

降级到GWT 2.3解决了这个问题。我尝试调用headerElement.setAttribute(“style”,“display:none”)而不是删除元素,但看起来不一样(它仍然保留了几个像素)。我知道创建一个CellTable然后去掉它的部分可能是一个不好的做法。

GWT 2.4中是否有任何可能导致此问题的已知更改?有人能想到一个解决方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用CSS属性获得相同的结果(隐藏标题):在celltable的“thead”css属性中使用“display:none”。

以下是:

<强> 1。创建一个css文件,其中包含以下条目:

Globalstyles.css:

    .hiddenHeader thead {
        display: none;
    }

<强> 2。将此文件添加到客户端资源包:

GlobalResources.java

    public interface GlobalResources extends ClientBundle {
        public static final GlobalResources RESOURCE =  GWT.create(GlobalResources.class);

        @Source("GlobalStyles.css")
        GlobalStylesheet styles();

    }

第3。在代码中,您可以在没有行时以编程方式设置样式:

    cellTable.addStyleName(GlobalResources.RESOURCE.styles().hiddenHeader());

要删除样式,请调用:

    cellTable.removeStyleName(GlobalResources.RESOURCE.styles().hiddenHeader());

完成!