Problème dans la mise à jour la page totale sage dans JSF datatable lors de l'utilisation RichFaces datascroller

StackOverflow https://stackoverflow.com/questions/3405654

Question

Je crée un DataTable dans ma page JSF qui montre le pied de page pour chaque colonne avec le total des valeurs dans la page de colonne sage.

J'utilise RichFaces datascroller pour la pagination.

Lorsque je clique sur la page suivante en richfaces datascroller j'ai besoin de mettre à jour mon pied de page avec le total des valeurs de colonne dans cette page, qui maintenant un problème pour moi

J'ai réussi à créer le code pour calculer la page totale sage en suivant cette discussion http://forums.sun.com/thread.jspa?threadID=5254959

Lorsque la page avec les charges DataTable j'ai réussi à voir correctement le total de la colonne dans le pied de page. Lorsque je clique sur la page suivante en datascroller la même valeur reste.
Par exemple, lorsque le total de la colonne de la première page est 5 et la deuxième page est 3.

J'ai réussi à montrer 5 correctement, lorsque je clique sur la page suivante j'ai besoin d'être mis à jour 3, mais 5 reste inchangé.

Il semble que seul organisme datatable est mis à jour lorsque je clique sur le bouton suivant dans datascroller. Y at-il une façon RichFaces ou JSF qui fait le pied de page pour obtenir mis à jour sur tous les clics? Ou est-il une autre alternative en dehors de RichFaces datascroller qui résout mon problème?

Mon code JSF est

<h:dataTable id="summary" binding="#{outboundCall.summaryTable}">

                                </h:dataTable>
                                <rich:datascroller reRender="summary" for="summary" style="width:623px;font-family : Verdana;font-weight: bold;">

                                </rich:datascroller>

Mon code java est

public HtmlDataTable getSummaryTable() 
{
    summaryTable = new HtmlDataTable();
    summaryTable.setRowClasses("datatablecontent");
    summaryTable.setColumnClasses("datatablecontent");
    summaryTable.setHeaderClass("datatableheader");
    summaryTable.setFooterClass("datatablecontent");
    summaryTable.setVar("data");
    summaryTable.setRows(5);
    //summaryTable.setId("summaryTable");
    summaryTable.setValueExpression("value", createValueExpression("#{outboundCall.summaryReports}", List.class));
    summaryTable.setRendered(getDataTableRendered());

    HtmlColumn column1 = getColumnDetails("Dialled Date", "#{data.dialledDate}");
    HtmlOutputText footerText1 = new HtmlOutputText();
    footerText1.setValue("Total");        
    column1.setFooter(footerText1);
    summaryTable.getChildren().add(column1);

    if(getStatus().equalsIgnoreCase("success") || getStatus().equalsIgnoreCase("all"))
    {
        System.out.println("Before footer calculation");
        int subTotalPrice = 0;
        for (int i = summaryTable.getFirst(); 
                 i < summaryTable.getFirst() + summaryTable.getRows() && 
                 i < getSummaryReports().size(); i++) 
        {
            SummaryReportsForOutBoundCalls dataItem = getSummaryReports().get(i);
            String dataItemPrice = dataItem.getSuccessCount();
            subTotalPrice += Integer.parseInt(dataItemPrice);
            dataItem.setTotalCallsTotal(Integer.toString(subTotalPrice));
        }

        setFooterTotalToDisplay(Integer.toString(subTotalPrice));
        HtmlColumn column2 = getColumnDetails("Success", "#{data.successCount}");
        HtmlOutputText footerText2 = new HtmlOutputText();
        footerText2.setValue(subTotalPrice);
        column2.setFooter(footerText2);

        summaryTable.getChildren().add(column2);            
    }

    return summaryTable;
}

Ceci est le code où je calcule la page totale sage

public List<SummaryReportsForOutBoundCalls> getSummaryReports() 
{
    int total = 0;

    //getSummaryTable();

    for (int i = summaryTable.getFirst(); 
     i < summaryTable.getFirst() + summaryTable.getRows() && 
     i < summaryReports.size(); i++) 
    {
        SummaryReportsForOutBoundCalls dataItem = summaryReports.get(i);
        String dataItemPrice = dataItem.getSuccessCount();
        total += Integer.parseInt(dataItemPrice);
        dataItem.setTotalCallsTotal(Integer.toString(total));

    }       
    scroller.setOncomplete("setValue('"+total+"')");
    scroller.setOnclick("setValue('"+total+"')");
    setFooterTotalToDisplay(Integer.toString(total));
    footerText2.setValue(total);

    return summaryReports;              
}

S'il vous plaît aidez-moi à résoudre ce

Merci d'avance

Était-ce utile?

La solution

, j'ai trouvé après une recherche douloureuse pendant une semaine a4j: fonctionJS résout le problème pour moi. Y at-il d'autre solution mieux que cela? Je suis impatient de le savoir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top