Primefaces Datatable筛选后页面中的当前行计数未正确更新
应用筛选后,以下代码未正确更新当前datatable行计数。有时我必须在键入文本后在过滤器输入框中按两次enter键,以便正确更新计数。有时它只在我输入文本后工作,而不按enter键。有时我也可以只键入一次enter键,然后正确更新计数。我不明白为什么我会有这种不同的行为。也许JSF/Primefaces专家可以帮助我理解这一点Primefaces Datatable筛选后页面中的当前行计数未正确更新,primefaces,datatable,primefaces-datatable,Primefaces,Datatable,Primefaces Datatable,应用筛选后,以下代码未正确更新当前datatable行计数。有时我必须在键入文本后在过滤器输入框中按两次enter键,以便正确更新计数。有时它只在我输入文本后工作,而不按enter键。有时我也可以只键入一次enter键,然后正确更新计数。我不明白为什么我会有这种不同的行为。也许JSF/Primefaces专家可以帮助我理解这一点 <h:form id="summaryForm"> ... <p:
<h:form id="summaryForm">
...
<p:tabView id="summaryTabView">
...
<p:tab id="allTab" title="All">
...
<script type="text/javascript">
//<![CDATA[
function updateAllRecordCount(){
var rowCount = PF('allTblWidget').paginator.cfg.rowCount;
//alert(rowCount);
var output = document.getElementById('summaryForm:summaryTabView:allTable:allCount');
if (output != null){
output.innerHTML = rowCount + " Records";
}
}
//]]>
</script>
<p:dataTable widgetVar="allTblWidget"
id="allTable"
var="pb"
value="#{statisticsBean.all}"
emptyMessage="No data available!"
rowKey="#{pb.rowId}"
scrollable="true" scrollHeight="440"
selection="#{statisticsBean.selectedBean}"
selectionMode="single"
editable="true"
editMode="cell"
paginator="true"
rows="300"
paginatorAlwaysVisible="false">
<p:ajax event="filter" oncomplete="updateAllRecordCount();"/>
<f:facet name="header">
<p:menubar styleClass="tableMenuClass">
...
<f:facet name="options">
<h:outputText id="allCount" style="font-size:14px;" value="#{statisticsBean.all.size()} Records"/>
</f:facet>
</p:menubar>
</f:facet>
...
...
...
...
//
...
...
下面列出的解决方法允许我在过滤后显示正确的记录计数-我基本上使用了下面datatable元素中列出的最后3个分页属性来显示过滤后的正确记录计数,并删除了上一个过滤事件、JavaScript函数和outputText字段。这个答案并没有真正回答最初的问题(我认为PF 5.1中可能有一个bug),但至少它提供了一个解决方案
<p:dataTable widgetVar="allTblWidget"
id="allTable"
var="pb"
value="#{statisticsBean.all}"
emptyMessage="No data available!"
rowKey="#{pb.rowId}"
scrollable="true" scrollHeight="440"
selection="#{statisticsBean.selectedBean}"
selectionMode="single"
editable="true"
editMode="cell"
paginator="true"
rows="300"
paginatorAlwaysVisible="true"
paginatorTemplate="{CurrentPageReport}"
currentPageReportTemplate="{totalRecords} Records">
它是在datatable本身中被错误地更新了,还是在javascript更新了额外的“allCount”字段之后被错误地更新了?请发布版本信息,并使其成为一个(例如,标签是否相关?)allCount字段中的计数错误更新。有时是上一次计数,有时是正确的,有时我必须按两次enter键才能正确更新。PF版本是5.1.0,标签不重要。然后至少试着检查它在新版本中是否有效。如果分页器中的PF rowcount显示了正确的数量,则问题出在其他地方