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;
 }