0

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

Kukeltje
  • 12,223
  • 4
  • 24
  • 47

0 Answers0