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);
}
Das ist richtig. Um eine Zeile hinzuzufügen/zu entfernen, müssen Sie die gesamte Tabelle erneut rendern. –