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

如何在包含小部件的gwt网格单元上设置rowspan和colspan值?,gwt,grid,Gwt,Grid,假设我有这样的代码 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 :( 那么,如何在包含小部件的gwt网格单元格上设置rowspan和colspan值呢?如果您可以使用它来代替网格: FlexTable flexTb= new FlexTable(); flexTb.getFlexCellForm

假设我有这样的代码

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 :(

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

如果您可以使用它来代替网格:

FlexTable flexTb= new FlexTable();
flexTb.getFlexCellFormatter().setColSpan(0, 1, 2);
flexTb.setWidget(0, 1, new Label("Hello"));

有一个不那么简单的解决办法。它通过直接操作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();
Grid g=新网格(10,5);
元素e=g.getCellFormatter().getElement(0,0);
e、 setAttribute(“colspan”、“5”);
ArrayList toRemove=新建ArrayList();

对于(int x=1;xJust FYI,
FlexTable
Grid
()慢,所以除非您必须动态添加单元格,否则您应该坚持使用
Grid
,以获得最佳性能:)@Cataclysm“而问询并没有说他有任何选择”作为技术经理,您真的应该改变您的思维方式。另外,请随时提供“有用的信息”。对不起,问题
如何在包含小部件的gwt网格单元上设置rowspan和colspan值?
。我想这个答案不是对的。FlexTable中有内置的方法来设置colspan或rowspan,但我也很难在GWT数据网格中设置跨距。你能建议我使用FlexTable吗?不,不可能。如果这不是你的解决方案,我很抱歉,但你不是这个网站上唯一的读者。这显然对其他一些人有所帮助。因此,如果您不能使用flextable,请参考其他答案。
/***设置给定单元格的列跨度。这是单元格所覆盖的逻辑*列的数目。**@参数行单元格的行*@param列单元格的列*@param colSpan单元格的列span*@抛出IndexOutOfBoundsException*/
这在IE 7、8或9中不起作用。目前正在为CellTableI寻找相同的解决方案,我从尝试操作dom转向css格式化。我的表tr:first child>td:first child+td{border:none}和一些东西。。。它会将第一行中的第二个单元格格式化为没有边框。例如,我设置了表格的格式,使其显示方式与colspan为5时相同。