2012-03-05 34 views
9

Necesito agregar una fila a mi tabla de datos al hacer clic en un botón - "Agregar empleado".Agregando dinámicamente una fila a las caras de datos dataTable

La tabla de datos muestra los registros correspondientes a una lista fija de Empleados en el bean.

Lo que estoy haciendo es, al hacer clic en el botón "Agregar empleado", estoy agregando un registro vacío de Empleado a la lista de trabajo.

¿Hay alguna forma mejor de hacerlo?

Gracias.

+1

Al hacer clic en el botón "Agregar empleado", acepte la entrada del usuario en varios campos. En el envío, agregue los detalles a la lista en el bean y haga la actualización de ajax en datatable. Datatable se actualizará según la lista de empleados en el bean. – rags

+0

@rags ¿es posible sin actualizar la tabla de datos? –

+0

se requiere actualización ajax ya que los nuevos detalles se agregan a la lista y están disponibles en el bean – rags

Respuesta

3

Una opción diferente sería mostrar un empleado vacío en la faceta de pie de página de su tabla de datos y agregarlo a su lista si el usuario hace clic en el botón Agregar. Con esto, puede asegurarse de que solo se agreguen correctamente a la lista las entidades/objetos empleados que se llenan correctamente.

4

O abre un cuadro de diálogo o una ventana emergente al hacer clic en el botón Agregar. Luego llene los campos requeridos (adjuntos a un objeto empleado. Y al guardar/enviar agrega ese objeto a su lista de objetos de empleado. Y renueve la tabla de datos. O puede agregar inicialmente un objeto emploee vacío a su lista. en la tabla de datos con InputFields. en añadir, se agrega el nuevo empleado a la lista y reRender la lista.

+0

. Por favor, compruebe lo siguiente para su problema: http://stackoverflow.com/questions/10513873/datamodel-must-implement-org-primefaces- model-seleccionabledatamodel-when-select/10514441 # 10514441 – rags

+0

¿Puedes plantear otra pregunta con fragmentos de código de xhtml y bean – rags

+0

que ya lo hicieron :) http://stackoverflow.com/questions/10815919 – roel

4

list_Recs es la lista de los registros y se muestra en la tabla de datos.

<p:dataTable id="myTable" value="#{myBean.list_Recs}" selectionMode="single" var="myTableVar" selection="#{myBean.currentRec}"> 
    <p:ajax event="rowSelect" listener="#{myBean.handleRowSelect}" update=":myForm:myPanel"/> 
    <p:column> 
     <f:facet name="header"> 
      <h:outputLabel value="Field 1" /> 
     </f:facet> 
     <h:outputLabel value="#{myTableVar.Field1}"/> 
    </p:column> 

    <p:column> 
     <f:facet name="header"> 
      <h:outputLabel value="Field 2" /> 
     </f:facet> 
     <h:outputLabel value="#{myTableVar.Field2}" /> 
    </p:column> 

    <f:facet name="footer"> 
     <p:commandButton value="New" action="#{myBean.prepareForInsert}" update=":myForm:myPanel"/> 
    </f:facet> 
</p:dataTable> 

<h:panelGrid id="myPanel" columns="2" > 
    <h:outputLabel value="Field 1"/> 
    <p:inputText id="fld1" value="#{myBean.newRec.field1}" /> 
    <h:outputLabel value="Field 2"/> 
    <p:inputText id="fld2" value="#{myBean.newRec.field2}" /> 
    <p:commandButton action="#{myBean.createAction}" value="Submit" update="myGrowl myTable" /> 
</h:panelGrid> 

Cuando botón nuevo se hace clic, cree una instancia emty de newRec en la rutina prepareForInsert de myBean. De modo que myPanel está lleno de espacios en blanco en los campos. En Enviar, agregue el nuevoRec a list_Recs y el nuevo registro aparece en la tabla de datos debido a la actualización en myTable. Espero que esto ayude.

+0

Hola, el código está perfectamente bien . Muchas gracias por tu esfuerzo. Pero no puedo incluir un nuevo panel. El requisito es agregar una fila en blanco al final de la tabla de datos. Si agrego un registro vacío en back-end, necesito actualizar la tabla de datos. Si actualizo la tabla de datos, perderé todos los mensajes de error, etc. –

+0

Rags, ¿puedes publicar una parte de tu código de bean? Estoy interesado porque necesito lo mismo pero obtengo un error al agregar una fila a mi lista. El siguiente error: DataModel debe implementar org.primefaces.model.SelectableDataModel cuando la selección está habilitada. Y solo tengo este error ya que actualicé desde PF2 a Primefaces 3.2 – roel

+0

@roel, compruebe http://stackoverflow.com/questions/10513873/datamodel-must-implement-org-primefaces-model-selectabledatamodel-when-selection/ 10514441 # 10514441 – rags

Cuestiones relacionadas