我有一个格式正确的 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的评论中提出了这个问题(并没有回答)。
答案 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
}
}
}
}