2012-03-05 1 views
9

Devo aggiungere una riga al mio datatable al clic di un pulsante - "Aggiungi dipendente".Aggiunta dinamica di una riga ai dati di dataTable

Il datatable mostra i record corrispondenti a un elenco fisso di Dipendenti nel bean.

Quello che sto facendo è, con un clic del pulsante "Add Employee", sto aggiungendo un record vuoto di Employee alla lista dei desideri.

C'è un modo migliore per farlo?

Grazie.

+1

Al clic del pulsante "Aggiungi dipendente", accettare l'input dall'utente in vari campi. Al momento dell'invio, aggiungi i dettagli all'elenco nel bean e esegui l'aggiornamento ajax su datatable. Datatable verrà aggiornato secondo l'elenco dei dipendenti nel bean. – rags

+0

@rags è possibile senza aggiornare il datatable? –

+0

è necessario un aggiornamento ajax poiché i nuovi dettagli vengono aggiunti all'elenco e disponibili nel bean – rags

risposta

3

Un'opzione diversa sarebbe quella di mostrare un dipendente vuoto nel facce del piè di pagina del datatable e aggiungerlo all'elenco se l'utente fa clic sul pulsante Aggiungi. Con questo si può garantire che solo gli oggetti/le entità dipendenti correttamente inseriti siano aggiunti al proprio elenco.

4

O si apre una finestra di dialogo o un popup quando si fa clic sul pulsante Aggiungi. Quindi compilare i campi obbligatori (allegati a un oggetto dipendente e, al momento del salvataggio/invio, aggiungere l'oggetto all'elenco di oggetti dipendenti e rieseguire il datatable Oppure aggiungere inizialmente un oggetto emploee vuoto all'elenco. nel DataTable con InputFields. su aggiungere, si aggiunge il nuovo dipendente alla lista e debba ripeterlo lista.

+0

per i seguenti problemi: http://stackoverflow.com/questions/10513873/datamodel-must-implement-org-primefaces- model-selectabledatamodel-when-selection/10514441 # 10514441 – rags

+0

puoi sollevare un'altra domanda con pezzi di codice da xhtml e bean – rags

+0

già fatto :) http://stackoverflow.com/questions/10815919 – roel

4

list_Recs è elenco di record e indicato nella tabella dei dati.

<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> 

Quando pulsante nuovo viene fatto clic, creare un'istanza emty di newRec nella routine prepareForInsert di myBean. In modo che myPanel è pieno di spazi vuoti nei campi. In Invia, aggiungi la nuova registrazione a list_Recs e il nuovo record viene visualizzato nella tabella dati a causa dell'aggiornamento su myTable. Spero che questo aiuti.

+0

Ciao, il codice è perfettamente a posto . Mille grazie per i tuoi sforzi. Ma, non posso includere un nuovo pannello. Il requisito è aggiungere una riga vuota alla fine del datatable. Se aggiungo un record vuoto al back end, ho bisogno di aggiornare il datatable. Se aggiorno il datatable, perderò tutti i messaggi di errore ecc. –

+0

Stracci, puoi pubblicare una parte del tuo codice bean? Sono interessato perché ho bisogno della stessa cosa ma ricevo un errore quando aggiungo una riga alla mia lista. Il seguente errore: DataModel deve implementare org.primefaces.model.SelectableDataModel quando la selezione è abilitata. E ho solo questo errore da quando ho aggiornato da PF2 a primefaces 3.2 – roel

+0

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