2

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

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

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

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

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

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

4

1 回答 1

0

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

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

如此丑陋,我不确定是否有更好的方法......

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

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


                }


            }


        }


    }
于 2013-05-08T23:56:47.143 回答