次のコードは、フィルタリングを適用した後に現在のデータテーブルの行数を正しく更新しません。ときどきカウントが正しく更新されるようにテキストを入力した後、フィルター入力ボックスでEnterキーを2回押す必要があります。そして、時にはテキストを入力してEnterキーを押さなくても機能します。場合によっては、入力キーを1回入力するだけでカウントが正しく更新されることもあります。私はなぜこの異なる行動を取るのか分かりません。おそらく、JSF/Primefacesの専門家が私の理解を助けるでしょうか?Primefacesフィルタリング後のページで、データテーブルの現在の行数が正しく更新されない
<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>
...
データテーブル自体に間違って更新されているのですか、JavaScriptの追加の 'allCount'フィールドが更新された後ですか?バージョン情報を投稿して[mcve]にしてください(例えば、関連するタブはありますか?) – Kukeltje
allCountフィールドでカウントが間違って更新されています。時々それは前のカウントであることもありますが、時には正解であり、正しく更新するためにEnterキーを2回押しなければならないこともあります。 PFバージョンは5.1です。 –
タブは関係ありません。 –