Отобразить общее количество столбцов в таблице данных «Начальные шрифты»

#datatable #primefaces

Вопрос:

Таблица Primefaces, которая будет отфильтрована по различным атрибутам столбцов, должна содержать сводную строку, значение которой будет обновляться по мере изменения пользователем значений в фильтрах. Есть ли какой-нибудь способ сделать это?

Ответ №1:

Создайте нижний колонтитул группы столбцов в файле payments.xhtml:

 <p:dataTable var="payments" value="#{testBean.payments}" filteredValue="#{testBean.filteredPayments}">

    <p:column headerText="Payment status:" filterBy="#{payment.status}">
        <h:outputText value="#{payment.status}"/>
    </p:column>

    <p:columnGroup type="footer">
        <p:row>
             <p:column colspan="6" headerText="Total: "/>
             <p:column colspan="2" headerText="#{testBean.totalPaymentsSum}"/>
       </p:row>
    </p:columnGroup>

</p:dataTable/>
 

В TestBean.java добавьте метод в качестве средства получения для вычисления сводной строки:

 List<Payment> payments;
List<Payment> filteredPayments;

public String getTotalPaymentsSum() {
    int total = 0;

    for(Payment payment : filteredPayments) {
        total  = payment.getAmount();
    }

    return new DecimalFormat("###,###.###").format(total);
}
 

Для получения дополнительной информации о фильтре см. витрину фильтра с данными.

Если у вас много данных и вы используете ленивую загрузку с возможностью обработки данных, вы можете рассчитать итоговую строку в методе load() или filter ().