GWT包装表并以编程方式操作内容

时间:2013-05-08 17:47:45

标签: html gwt html-table

我有一个格式正确的 HTML表(HTML文本由报告工具生成),我想把它变成GWT中的“可编程”表。 我需要显示提供的内容,但我还需要检查DOM,获取表格,并将ClickHandler添加到行和单元格中。

我可以用图像做类似的事情:

Html html = new HTML(htmlText);
ImageElement domElement = getChildImageByTagAndId(html.getElement(), "img", "blah");
Image image = Image.wrap(domElement);
image.addClickHandler(...);

我的问题是:用表格执行此操作的正确方法是什么?

我找不到<table><tr><td>元素的wrap()方法。

注意:在接受的答案here的评论中提出了这个问题(并没有回答)。

1 个答案:

答案 0 :(得分:0)

我不知道用sub tr和td元素包装现有Table的简单方法。

考虑到您依赖第三方工具的限制,我建议尝试构建一个自定义表解析器,它将解析现有表,构建FlexTable,然后用新的FlexTable替换现有表。

虽然这很难看,但我不确定有更好的方法......

这可能取决于表的设置方式,但您可以尝试使用类似下面的示例来浏览现有表并使用getNodeValue()来构建FlexTable的内容.... / p>

Element table = DOM.getElementById("someTableId");

    int numTopNodes = table.getChildNodes().getLength();

    for(int topNode = 0; topNode < numTopNodes; topNode++){

        Node top = table.getChildNodes().getItem(topNode);
        System.out.println("Top Node: "+top);


        for(int subNode = 0; subNode < top.getChildCount(); subNode ++){

            Node sub = top.getChildNodes().getItem(subNode);
            System.out.println("Sub Node: "+sub);

            for(int rows = 0; rows < sub.getChildCount(); rows ++){

                Node row = sub.getChildNodes().getItem(rows);
                System.out.println("Row: "+row);


                for(int cells = 0; cells < row.getChildCount(); cells++ ){

                    Node cell = row.getChildNodes().getItem(cells);

                    System.out.println("CELL: "+cell.getNodeValue()); // use value to build to build a new FlexTable


                }


            }


        }


    }