RichFaces DataTable - l'aggiunta di una nuova riga senza rerendering tutta la DataTable sul lato client
-
13-10-2019 - |
Domanda
La nuova riga può essere aggiunto alla raccolta lato server associato a un evento azione di un pulsante di comando o un collegamento di comando, e la riga appena aggiunto può essere visualizzato sul client se l'intera tabella è ri- reso .
E 'possibile visualizzare la riga appena aggiunta sul lato client senza la necessità di aggiornare l'intero datatable , con il rendering parziale , con l'aiuto di AjaxKeys o qualcosa del genere?
Grazie in anticipo per qualsiasi aiuto:)
Soluzione
Devi rerender intero DataTable se si sta aggiungendo una nuova riga. AjaxKeys può essere utile se si desidera rerender colonne esistenti.
Altri suggerimenti
Sono molto interessato anche di conoscere una risposta per la tua domanda, Posso ottenere che l'utilizzo di tradizionali Javascript, ma quando uso ricco:. DataTable non posso aggiungere nuove righe sul client
Ma ho fatto che l'utilizzo di ajax chiamate alle funzioni del server, questa funzione aggiungere nuova riga vuota a elenco dataTable e rendere i ricchi:. Nuovo DataTable
mia pagina xhtml
<rich:column>
<f:facet name="header"><h:outputLabel value="#{msgs.notes}" style="font-size:15px;"/> </f:facet>
<h:inputText value="#{line.notes}" >
<a4j:ajax event="blur"
execute="datatable"
render="datatable"
immediate="true"
listener="#{saleBacking.addNewLineInDataTable}"
oncomplete="document.getElementById('myform:datatable:#{saleBacking.view_no_counter-1}:line').focus();"/>
</h:inputText>
</rich:column>
e il fagiolo maneged
public void addNewLineInDataTable(AjaxBehaviorEvent event)
{
SaleLine saleLine = new SaleLine();
saleLine.setId(salesLineslist.isEmpty() ? 1 : salesLineslist.get(salesLineslist.size() - 1).getId() + 1);
salesLineslist.add(saleLine);
saleLine = new SaleLine();
saleLine = new SaleLine();
saleLine.setSaleId(sale);
saleLine.setViewNo(++view_no_counter);
saleLine.setDiscount(0d);
saleLine.setItemPrice(0d);
salesLines.add(saleLine);
}