0

过滤primefaces 'tasksDataTable' 后,'记录数' 不会更新。例如,在过滤记录数为 45 之前,通过过滤表我得到 3 条记录作为结果。但是“记录数”已经是 45(我希望过滤后的“记录数”显示 3)。我该如何处理?

<p:dataTable var="recordEntity"
             id="rulesDataTable"
             widgetVar="rulesDataTable"
             value="#{bossCartable.tasksDataTable}"
             paginator="true"
             paginatorAlwaysVisible="false"
             rows="#{paginationModel.rows}"
             paginatorTemplate="#{paginationModel.paginationTemplate}"
             rowsPerPageTemplate="#{paginationModel.rowsPerPageTemplate}"
             currentPageReportTemplate="#{paginationModel.currentPageReportTemplate}"
             selectionMode="single"
             selection="#{bossCartable.selectedRuleRow}"
             rowIndexVar="rowIndex"
             sortBy="#{recordEntity.id}"
             emptyMessage="No record found!"
             rowKey="#{recordEntity.id}"
             resizableColumns="true"
>

    <f:facet name="header">
        <div class="row align-content-center">
            Tasks
            <h:outputLabel value="number of records: #{bossCartable.tasksDataTable.size()}"/>
        </div>
    </f:facet>

    <p:column headerText="id" width="5%" filterMatchMode="contains"
              filterBy="#{recordEntity.id}" sortBy="#{recordEntity.id}" sortable="true">
        <h:outputText value="#{recordEntity.id}"/>
    </p:column>


    <p:column headerText="description" filterMatchMode="contains"
              filterBy="#{recordEntity.description}">
        <h:outputText value="#{recordEntity.description}"/>
    </p:column>

    <p:column headerText="startDate" width="8%" filterMatchMode="contains"
              filterBy="#{recordEntity.startDate}">
        <h:outputText value="#{recordEntity.startDate}"/>
    </p:column>

    <p:column headerText="endDate" width="8%" filterMatchMode="contains"
              filterBy="#{recordEntity.endDate}">
        <h:outputText value="#{recordEntity.endDate}"/>
    </p:column>


</p:dataTable>
4

1 回答 1

3

通过非延迟加载,可以使用该filteredValue属性存储过滤后的值。见:https ://primefaces.github.io/primefaces/8_0/#/components/datatable

这将允许您使用:

<p:dataTable value="#{bossCartable.tasksDataTable}"
             filteredValue="#{bossCartable.tasksFiltered}"
             ...>
</p:dataTable>

#{bossCartable.tasksFiltered.size()}

wheretasksFiltered应该指向一个可写的List.

此外,你的header方面不会被魔法更新,你应该把你的文本放在一个组件中,并filter在数据表的事件中更新该组件。

也可以看看:

于 2020-07-10T09:55:56.003 回答