private DomElement createRow(int row, boolean withIds, WApplication app) { DomElement tr = DomElement.createNew(DomElementType.DomElement_TR); if (withIds) { tr.setId(this.rows_.get(row).getId()); } this.rows_.get(row).updateDom(tr, true); tr.setWasEmpty(false); int spanCounter = 0; for (int col = 0; col < this.getColumnCount(); ++col) { WTableRow.TableData d = this.itemAt(row, col); if (!d.overSpanned) { DomElement td = d.cell.createSDomElement(app); if (col < this.headerColumnCount_ || row < this.headerRowCount_) { tr.addChild(td); } else { tr.insertChildAt(td, col - spanCounter); } for (int i = 0; i < d.cell.getRowSpan(); ++i) { for (int j = 0; j < d.cell.getColumnSpan(); ++j) { if (i + j > 0) { this.itemAt(row + i, col + j).overSpanned = true; this.itemAt(row + i, col + j).cell.setRendered(false); } } } } else { spanCounter++; } } return tr; }