<p:datatable> columnas agrupadas

 <p:dataTable
                        id="datatableSumaTurnos2" var="item"
                        value="#{reservadoController.reservadoagenteDataModel}"
                        selectionMode="single" 
                        widgetVar="widgetDataTableSumaTurnos"
                        selection="#{reservadoController.reservadoagenteSelected}"
                        editable="true"

                        rowStyleClass="#{item.horasmes eq 150 ? '' : 'coloredalert'}"

                        rowIndexVar="rowIx"

                        rowKey="#{item.idreservadoagente}"
                        emptyMessage="#{app['info.datatableempty']}" reflow="true"
                        >


                        <f:facet name="header">
                            #{msg['titlelist.turnos']}
                        </f:facet>



                        <p:columnGroup type="header">
                            <p:row>
                                <p:column rowspan="1" headerText="#{msg['titleview.agente']}" />
                                <p:column colspan="5" headerText="#{msg['headerText.totalesturnos']}" />
                                <p:column colspan="1" headerText="#{msg['headerText.totaleshoras']}" />
                                <p:column colspan="1"  headerText="#{msg['headerText.vacaciones']}" />
                                <p:column colspan="1"  headerText="#{msg['headerText.vacaciones']}" />

                            </p:row>
                            <p:row>

                                <p:column  headerText="" />
                                <p:column headerText="#{msg['headerText.t0']}"/>
                                <p:column headerText="#{msg['headerText.t1']}"/>
                                <p:column headerText="#{msg['headerText.t2']}"/>
                                <p:column headerText="#{msg['headerText.t3']}"/>
                                <p:column headerText="#{msg['headerText.t4']}"/>
                                <p:column  headerText="#{msg['headerText.mes']}"/>
                                <p:column style=" " headerText="#{msg['headerText.fechas']}"/>
                                <p:column  headerText="#{msg['headerText.dias']}"/>

                            </p:row>


                        </p:columnGroup>

                        <p:column headerText="#{msg['field.agente']}" filterBy="#{item.agente.siglas}"
                                  sortBy="#{item.agente.siglas}"  filterMatchMode="contains" >
                            <p:outputLabel value="#{item.agente.siglas} -#{item.agente.nombre} " 
                                           title="#{reservadoController.columnTextVacacionesAgente(item.agente)}"  />

                        </p:column>
                        <p:column>
                            <p:outputLabel value="#{reservadoController.contarTurnosCeros(item)}" />

                        </p:column>
                        <p:column>
                            <p:outputLabel value="#{item.t1}" />

                        </p:column>
                        <p:column >
                            <p:outputLabel value="#{item.t2}"  />

                        </p:column>
                        <p:column >
                            <p:outputLabel value="#{item.t3}"  />

                        </p:column>
                        <p:column >
                            <p:outputLabel value="#{item.t4}"  />

                        </p:column>
                        <p:column>
                            <p:outputLabel value="#{item.horasmes}"  />

                        </p:column>
                        <p:column >
                            <p:outputLabel value="#{reservadoController.columnTextVacacionesAgente(item.agente)}" style="font-size:12px;" />

                        </p:column>
                        <p:column>
                            <p:outputLabel value="#{reservadoController.columnTextDiasVacaciones(item.agente)}"  />

                        </p:column>

<f:facet name="footer">
    <p:outputLabel value="#{reservadoController.columnTextCerosPorMes()}"  />
        </f:facet>



                    </p:dataTable>

Otra agrupacion

codigo

 <p:dataTable value="#{solicitudController.disponiblesBeansList}" 
                                         id="datatableDisponibles"


                                         var="item"  >
                                <f:facet name="header">
                                    <p:outputLabel  value="#{msg['tabletitle.vehiculos']}" />
                                </f:facet>
                                <p:columnGroup type="header">
                                    <p:row>

                                        <p:column rowspan="3"  style="width:95px" headerText="#{msg['field.fecha']}" />
                                        <p:column colspan="4" headerText="#{msg['tabletitle.resultado']}" />
                                    </p:row>
                                    <p:row>
                                        <p:column colspan="2" headerText="#{msg['tabletitle.disponibles']}" />
                                        <p:column colspan="3" headerText="#{msg['tabletitle.recomendados']}" />

                                    </p:row>
                                    <p:row>
                                        <p:column headerText="#{msg['field.buses']}" />
                                        <p:column headerText="#{msg['field.pasajeros']}" />
                                        <p:column headerText="#{msg['field.buses']}" />
                                        <p:column headerText="" />



                                    </p:row>
                                </p:columnGroup>
                                <p:column style="width:95px">
                                    <p:rowToggler />
                                    <h:outputText value="#{solicitudController.showDate(item.fechahorainicio)}" style="color: #{solicitudController.columnColorDisponibles(item)}"  />
                                </p:column>


                                <p:column headerText="#{msg['field.buses']}" style="width:75px">
                                    <p:outputLabel value="#{item.numeroBuses}" style="color: #{solicitudController.columnColorDisponibles(item)}" />
                                </p:column>
                                <p:column headerText="#{msg['field.pasajeros']}" style="width:75px">
                                    <p:outputLabel value="#{item.numeroPasajeros}" style="color: #{solicitudController.columnColorDisponibles(item)}"  />
                                </p:column>
                                <p:column headerText="#{msg['field.busesRecomendados']}" style="width:75px">
                                    <p:outputLabel value="#{item.busesRecomendados}" style="color: #{solicitudController.columnColorDisponibles(item)}"  />
                                </p:column>

                                <p:column headerText="" style="width:45px">
                                    <p:outputLabel value="" rendered="#{solicitudController.columnTieneBusesDisponibles(item)}" >
                                        <i class="pi pi-check"></i>
                                    </p:outputLabel>
                                    <p:outputLabel value="" rendered="#{!solicitudController.columnTieneBusesDisponibles(item)}" >
                                        <i class="pi pi-exclamation-triangle"></i>
                                    </p:outputLabel>                                  
                                </p:column>
                                <p:rowExpansion>
                                    <p:dataTable value ="#{item.vehiculo}" var="car">
                                        <p:column headerText="#{msg['field.marca']}">
                                            <p:outputLabel value="#{car.marca}"/>
                                        </p:column>
                                        <p:column headerText="#{msg['field.modelo']}">
                                            <p:outputLabel value="#{car.modelo}"/>
                                        </p:column>
                                        <p:column headerText="#{msg['field.placa']}">
                                            <p:outputLabel value="#{car.placa}"/>
                                        </p:column>
                                        <p:column headerText="#{msg['field.pasajeros']}">
                                            <p:outputLabel value="#{car.pasajeros}"/>
                                        </p:column>
                                    </p:dataTable>

                                </p:rowExpansion>


                            </p:dataTable>       

Otra forma de agruparlo

codigo

<p:dataTable value="#{solicitudAdministrativoController.disponiblesBeansList}" 
                                         id="datatableDisponibles"
                                         var="item"  >
                                <f:facet name="header">
                                    <p:outputLabel  value="#{msg['tabletitle.vehiculos']}" />
                                </f:facet>
                                <p:columnGroup type="header">
                                    <p:row>

                                        <p:column rowspan="1" style="width:80px" headerText="#{msg['field.fecha']}" />
                                        <p:column colspan="1"  style="width:85px" headerText="#{msg['field.tipovehiculo']}" />
                                        <p:column colspan="5" headerText="#{msg['tabletitle.resultado']}" />
                                    </p:row>
                                    <p:row>
                                        <p:column headerText="" />
                                        <p:column headerText="" />
                                        <p:column colspan="2" headerText="#{msg['tabletitle.disponibles']}" />
                                        <p:column colspan="3" headerText="#{msg['tabletitle.solicitados']}" />
                                        <p:column colspan="1" headerText="#{msg['tabletitle.recomendados']}" />

                                    </p:row>
                                    <p:row>
                                        <p:column headerText="" />
                                        <p:column headerText="" />
                                        <p:column headerText="#{msg['field.vehiculos']}" />
                                        <p:column headerText="#{msg['field.pasajeros']}" />
                                        <p:column headerText="#{msg['field.vehiculos']}" />
                                        <p:column headerText="#{msg['field.pasajeros']}" /> 
                                        <p:column headerText="#{msg['field.recomendados']}" />
                             
                                    </p:row>
                                </p:columnGroup>

                                <p:column style="width:75px">

                                    <p:rowToggler />
                                    <h:outputText value="#{solicitudAdministrativoController.showDate(item.fechahorainicio)}" style="color: #{solicitudAdministrativoController.columnColorDisponibles(item)}"  />
                                </p:column>


                                <p:column headerText="#{msg['field.tipovehiculo']}" style="width:75px">
                                    <h:outputText value="#{item.vehiculo.get(0).tipovehiculo.idtipovehiculo}" style="color: #{solicitudAdministrativoController.columnColorDisponibles(item)}"  />
                                </p:column>


                                <p:column headerText="#{msg['field.disponible']}" style="width:75px">
                                    <p:outputLabel value="#{item.numeroBuses}" style="color: #{solicitudAdministrativoController.columnColorDisponibles(item)}" />
                                </p:column>
                                <p:column headerText="#{msg['field.pasajeros']}" style="width:75px">
                                    <p:outputLabel value="#{item.numeroPasajeros}" style="color: #{solicitudAdministrativoController.columnColorDisponibles(item)}" />
                                </p:column>



                                <p:column headerText="#{msg['field.solicitado']}" style="width:75px">
                                    <p:outputLabel value="#{item.numeroVehiculosSolicitados}" style="color: #{solicitudAdministrativoController.columnColorDisponibles(item)}"  />
                                </p:column>
                                <p:column headerText="#{msg['field.pasajeros']}" style="width:75px">
                                    <p:outputLabel value="#{item.numeroPasajerosSolicitados}" style="color: #{solicitudAdministrativoController.columnColorDisponibles(item)}"  />
                                </p:column>

                                <p:column headerText="#{msg['field.vehiculosRecomendados']}" style="width:75px">
                                    <p:outputLabel value="#{item.busesRecomendados}" style="color: #{solicitudController.columnColorDisponibles(item)}"  />
                                </p:column>


                                <p:rowExpansion>
                                    <p:dataTable value ="#{item.vehiculo}" var="car">
                                        <p:column headerText="#{msg['field.marca']}">
                                            <p:outputLabel value="#{car.marca}"/>
                                        </p:column>
                                        <p:column headerText="#{msg['field.modelo']}">
                                            <p:outputLabel value="#{car.modelo}"/>
                                        </p:column>
                                        <p:column headerText="#{msg['field.placa']}">
                                            <p:outputLabel value="#{car.placa}"/>
                                        </p:column>
                                        <p:column headerText="#{msg['field.pasajeros']}">
                                            <p:outputLabel value="#{car.pasajeros}"/>
                                        </p:column>
                                    </p:dataTable>

                                </p:rowExpansion>

                            </p:dataTable>     

Last updated