protected void encodeTable(FacesContext facesContext, DataGrid grid, boolean hidden) throws IOException { ResponseWriter writer = facesContext.getResponseWriter(); String clientId = grid.getClientId(facesContext); int columns = grid.getColumns(); int rowIndex = grid.getFirst(); int numberOfRowsToRender = (grid.getRows() != 0 ? grid.getRows() : grid.getRowCount()) / columns; writer.startElement("table", grid); writer.writeAttribute("id", clientId + "_table", "id"); writer.writeAttribute("class", DataGrid.TABLE_CLASS, null); if (hidden) writer.writeAttribute("style", "display:none", null); writer.startElement("tbody", null); for (int i = 0; i < numberOfRowsToRender; i++) { writer.startElement("tr", null); writer.writeAttribute("class", DataGrid.TABLE_ROW_CLASS, null); for (int j = 0; j < columns; j++) { grid.setRowIndex(rowIndex); writer.startElement("td", null); writer.writeAttribute("class", DataGrid.TABLE_COLUMN_CLASS, null); if (grid.isRowAvailable()) { renderChildren(facesContext, grid); rowIndex++; } writer.endElement("td"); } writer.endElement("tr"); if (!grid.isRowAvailable()) break; } grid.setRowIndex(-1); // cleanup writer.endElement("tbody"); writer.endElement("table"); }