如何在包含小部件的gwt Grid单元格上设置rowspan和colspan值?

Łuk*_*nik 13 grid gwt

假设我有这样的代码

Grid g = new Grid(2,2);
Label l = new Label("Hello");
g.setWidget(0,1, l);
s.setColspan(0,1,2); // there is no such method :(
Run Code Online (Sandbox Code Playgroud)

那么如何在包含小部件的gwt Grid单元格上设置rowspan和colspan值呢?

Jla*_*Jla 26

如果是一个选项,您可以使用FlexTable而不是Grid:

FlexTable flexTb= new FlexTable();
flexTb.getFlexCellFormatter().setColSpan(0, 1, 2);
flexTb.setWidget(0, 1, new Label("Hello"));
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,"FlexTable"比"Grid"慢(http://code.google.com/p/google-web-toolkit-incubator/wiki/BulkTableRenderers),所以除非你必须动态添加单元格,否则你应该坚持下去使用`Grid`以获得最佳性能:) (6认同)

Tho*_*nig 8

对此有一个不那么简单的解决方案.它通过直接操作DOM来工作.

Grid g = new Grid(10, 5);

Element e = g.getCellFormatter().getElement(0, 0);
e.setAttribute("colspan", "5");

ArrayList<Element> toRemove = new ArrayList<Element>();
for (int x=1; x<5; x++)
    toRemove.add(g.getCellFormatter().getElement(0, x));
for (Element f : toRemove)
    f.removeFromParent();
Run Code Online (Sandbox Code Playgroud)

它确实如下:

  • 将第一个TD的属性"colspan"设置为"5"
  • 删除同一行中的其他TD

请注意,我曾经使用for循环.我用一个循环尝试了它,但是有些元素是NULL,所以我尝试了这种方式并且它有效.

托马斯

  • 我试图操纵dom到css-formating.有很多好东西可以做.my-table tr:first-child> td:first-child + td {border:none}等等......它会格式化第一行中的第二个单元格,没有边框.因此,如果colspan为5,我格式化我的表格就好了. (2认同)