@Override
  protected void doCleanup(FacesContext context, RowHolderBase rowHolder) throws IOException {
    ResponseWriter writer = context.getResponseWriter();
    AbstractDataGrid dataGrid = (AbstractDataGrid) rowHolder.getRow();

    int cell = rowHolder.getProcessCell();
    int columns = dataGrid.getColumns();
    int rest = columns - cell;

    for (int i = 0; i < rest; i++) {
      writer.startElement(HtmlConstants.TD_ELEM, dataGrid);
      writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, "rf-dg-c", null);
      writer.endElement(HtmlConstants.TD_ELEM);
    }
    writer.endElement(HtmlConstants.TR_ELEMENT);
  }
  @Override
  public void encodeRow(ResponseWriter writer, FacesContext facesContext, RowHolderBase rowHolder)
      throws IOException {
    AbstractDataGrid dataGrid = (AbstractDataGrid) rowHolder.getRow();

    int columns = dataGrid.getColumns();
    int processCell = rowHolder.getProcessCell();

    if (columns > 0 && (processCell % columns == 0)) {
      if (processCell != 0) {
        writer.endElement(HtmlConstants.TR_ELEMENT);
        rowHolder.resetProcessCell();
      }
      writer.startElement(HtmlConstants.TR_ELEMENT, dataGrid);
      writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, "rf-dg-r", null);
      rowHolder.nextRow();
    }

    writer.startElement(HtmlConstants.TD_ELEM, dataGrid);
    writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, "rf-dg-c", null);
    renderChildren(facesContext, dataGrid);
    writer.endElement(HtmlConstants.TD_ELEM);
  }