2010-12-29 4 views
2

Die neue Zeile kann der zugeordneten serverseitigen Auflistung für ein Aktionsereignis einer Befehlsschaltfläche oder Befehlsverbindung und der neu hinzugefügten Zeile hinzugefügt werden kann auf dem Client angezeigt werden, wenn die gesamte Tabelle neu gerendert wird.Richfaces-Datentabelle - Hinzufügen einer neuen Zeile ohne erneutes Rendern der gesamten Datentabelle auf der Clientseite

Ist es möglich, die neu hinzugefügte Zeile auf der Client-Seite , ohne anzuzeigen die gesamte Datentabelle, mit dem Teil Rendering, mit Hilfe von AjaxKeys oder etwas zu erfrischen?

Vielen Dank im Voraus für jede Hilfe :)

Antwort

1

Sie haben ganze Datentabelle rerender, wenn Sie eine neue Zeile hinzugefügt werden. AjaxKeys können nützlich sein, wenn Sie vorhandene Spalten neu rendern möchten.

+0

Das ist richtig. Um eine Zeile hinzuzufügen/zu entfernen, müssen Sie die gesamte Tabelle erneut rendern. –

0

Ich bin sehr interessiert auch eine Antwort auf Ihre Frage zu wissen, Ich kann das mit herkömmlichen Javascript erreichen, aber wenn ich reiche: Datatable kann ich keine neuen Zeilen auf dem Client hinzufügen.

Aber ich habe das mit Ajax Aufrufe von Serverfunktionen, diese Funktion neue leere Zeile der DataTable-Liste hinzufügen und rich: Datatable wieder rendern.

meine xhtml Seite

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

und in der maneged Bohne

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); 
    }