I am trying to update my datable footer after cellEdit method is fired. I read and test this post without success Updating entire <p:dataTable> on complete of <p:ajax event="cellEdit">
The cellEdit method is fired but it do not update the datatable. Even in the cellEdit method i use omnifaces Ajax.update("ID"); methode but it do not update Here is my datatable xhtml file
<p:dataTable id="brouiDtable" widgetVar="brouillard" var="broui" editMode="cell"
value="#{brouillardManagedBean.brouillards}" selection="#{brouillardManagedBean.selectedBrouillard}"
rowKey="#{broui.numLigne}"
rowIndexVar="indexStatusList"
editable="true" style="margin-bottom:20px">
<p:ajax event="rowEdit" listener="#{brouillardManagedBean.onRowEdit}" update=":saisie:msgs,:saisie:brouiDtable" process=":saisie:brouiDtable" />
<p:ajax event="rowEditCancel" listener="#{brouillardManagedBean.onRowCancel}" update=":saisie:msgs,:saisie:brouiDtable" process=":saisie:brouiDtable"/>
<p:ajax event="cellEdit" listener="#{brouillardManagedBean.onCellEdit}" update=":saisie:brouiDtable" />
<p:column headerText="#" style="width:3%">
#{indexStatusList+1}
</p:column>
<p:column style="width:32px">
<p:commandButton process="@this,:saisie:brouiDtable" update=":saisie:msgs,:saisie:brouiDtable" icon="fa fa-trash Fs20 white"
actionListener="#{brouillardManagedBean.onRemoveNew(broui)}" />
</p:column>
<p:column headerText="Compte du grand livre">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{broui.souscompte.codeIntituleFr()}" /></f:facet>
<f:facet name="input">
<p:autoComplete completeMethod="#{brouillardManagedBean.completeText}" value="#{broui.souscompte}" cache="true"
var="sCompte" itemLabel="#{sCompte.codeIntituleFr()}" tabindex="1" maxResults="10"
dropdown="true" dropdownMode="current" converter="sousCompteConverter"
itemValue="#{sCompte}" forceSelection="true">
<p:ajax event="itemSelect" listener="#{brouillardManagedBean.onItemSelect}" update=":saisie:msgs" />
</p:autoComplete>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Libelle">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{broui.libelle}" /></f:facet>
<f:facet name="input"><p:inputText value="#{broui.libelle}" tabindex="2" style="width:100%" label="Libellé"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Débit" width="150">
<p:cellEditor>
<f:facet name="output"><p:inputNumber value="#{broui.debit}" /></f:facet>
<f:facet name="input">
<p:inputNumber value="#{broui.debit}" tabindex="3" emptyValue="zero" style="width:100%" label="Débit" >
<p:ajax event=""
</p:inputNumber>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Crédit" width="150">
<p:cellEditor>
<f:facet name="output"><p:inputNumber value="#{broui.credit}" /></f:facet>
<f:facet name="input">
<p:inputNumber value="#{broui.credit}" tabindex="4" emptyValue="zero" style="width:100%" label="Crédit">
</p:inputNumber>
</f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:40px">
<f:facet name="header">
<p:commandButton process="@this,:saisie:brouiDtable" update=":saisie:msgs,:saisie:brouiDtable" icon="fa fa-plus"
actionListener="#{brouillardManagedBean.onAddNew()}"/>
</f:facet>
</p:column>
<p:columnGroup id="foot" type="footer">
<p:row>
<p:column footerText="Totals: " colspan="4" style="text-align:right;background-color: white; color: #04838f; font-size: 16px;font-weight: bold;width: 150px;"/>
<p:column footerText="#{brouillardManagedBean.totDebit}" style="background-color: white; color: #04838f; font-size: 16px;font-weight: bold;width: 150px;"/>
<p:column footerText="#{brouillardManagedBean.totCredit}" style="background-color: white; color: #04838f; font-size: 16px;font-weight: bold;width: 150px;" />
</p:row>
<p:row>
<p:column footerText="Solde: " colspan="4" style="text-align:right;background-color: white; color: #04838f; font-size: 16px;font-weight: bold;width: 150px;"/>
<p:column footerText="#{brouillardManagedBean.soldeDebit}" style="background-color: white; color: #04838f; font-size: 16px;font-weight: bold;width: 150px;" />
<p:column footerText="#{brouillardManagedBean.soldeCredit}" style="background-color: white; color: #04838f; font-size: 16px;font-weight: bold;width: 150px;"/>
</p:row>
</p:columnGroup>
</p:dataTable>
here is my cellEdit method
public void onCellEdit(CellEditEvent event) {
System.out.println("Cell Edit");
brouillards.forEach(System.out::println);
calculSolde();
// Ajax.update("saisie:brouiDtable");
}
public void calculSolde() {
totCredit = brouillards.stream().mapToDouble(Brouillard::getCredit).sum();
totDebit = brouillards.stream().mapToDouble(Brouillard::getDebit).sum();
if (totCredit >= totDebit) {
soldeCredit = totCredit - totDebit;
soldeDebit = 0D;
} else {
soldeDebit = totDebit - totCredit;
soldeCredit = 0D;
}
}
Thanks to help me