Tuesday, September 03, 2013

Columnas editables en un datatable

Columnas editables en un datatable

Podemos editar columnas específicas en un datatable y luego actualizar los registros de la tabla a través de los ManagedBeans data utilizados con DataClassG y JSFGenerator
  • Establecer editable=”true” y editMode=”cell”
<p:dataTable var="var" value="#{tiempodedicacionData.tiempodedicacionlist}" paginator="true"
                                    rows="20"
                                     editable="true" editMode="cell"
                                    selectionMode="single"
                                    rowKey="#{var.idtiempodedicacion}"
                                    selection="#{tiempodedicacionData.selectedTiempodedicacion}"  
                                    widgetVar= "tiempodedicacionTable"
                                    filteredValue="#{tiempodedicacionData.filteredTiempodedicacion}"
                                    id="datatableTiempodedicacion"
                                    >

  • En la columna colocamos  <p:cellEditor>  



  <p:column headerText="#{mensajes.tiempodedicacion}" style="width:25%">  
                               <p:cellEditor>  
                                   <f:facet name="output"><h:outputText value="#{var.tiempodedicacion}" /></f:facet>  
                                   <f:facet name="input"><p:inputText value="#{var.tiempodedicacion}" style="width:96%" label="#{mensajes.tiempodedicacion}"/></f:facet>  
                               </p:cellEditor>  
                           </p:column>



Colocamos el boton
<f:facet name="footer">
         <p:commandButton actionListener="#{tiempodedicacionData.updateLista()}" title="#{mensajes['boton.editar']}"                                              
       oncomplete=" handleSubmitRequest(xhr, status, args, 'tiempodedicacionDialogInsert','newUserForm');"                                              
                                                    ajax="false" icon="ui-icon-disk" />
                           </f:facet>




  • En el Data  recorro la lista de objetos para actualizarlos
public Boolean updateLista() {
       try {
           for (Tiempodedicacion t : tiempodedicacionlist) {
               if (t.getTiempodedicacion() < 0) {
                   JSFUtil.addSuccessMessage(archivoRecursos.getRb().getString("label.tiempodedicacionnonulo"));
                   return false;
               }

           }

           Integer totalupdate = 0;
           for (Tiempodedicacion t : tiempodedicacionlist) {

               tiempodedicacionController.setTiempodedicacion(t);
               if (tiempodedicacionController.update()) {
                   totalupdate++;

               } else {
                   JSFUtil.addWarningMessage(archivoRecursos.getRb().getString("msg.noupdate") + tiempodedicacionController.getMensaje());
               }
           }
           if (totalupdate != tiempodedicacionlist.size()) {
               JSFUtil.addWarningMessage(archivoRecursos.getRb().getString("msg.noupdate"));
           } else {
               JSFUtil.addSuccessMessage(archivoRecursos.getRb().getString("msg.edited"));
           }




       } catch (Exception ex) {
           JSFUtil.addErrorMessage("updateLista()" + ex.getLocalizedMessage());
       }
       return false;
   }

1 comment:

yassine yassin said...

thank you for sharing
can you give us a ZIP because this tutorial don't work for me