2017-03-07 24 views
0

次のコードは、フィルタリングを適用した後に現在のデータテーブルの行数を正しく更新しません。ときどきカウントが正しく更新されるようにテキストを入力した後、フィルター入力ボックスで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> 
        ... 
+0

データテーブル自体に間違って更新されているのですか、JavaScriptの追加の 'allCount'フィールドが更新された後ですか?バージョン情報を投稿して[mcve]にしてください(例えば、関連するタブはありますか?) – Kukeltje

+0

allCountフィールドでカウントが間違って更新されています。時々それは前のカウントであることもありますが、時には正解であり、正しく更新するためにEnterキーを2回押しなければならないこともあります。 PFバージョンは5.1です。 –

+0

タブは関係ありません。 –

答えて

0

、下記の回避策は、私はフィルタリング後の正しいレコード数を表示することができます - 私は基本的には、フィルタリング後に正しいレコード数を表示するには、以下のデータテーブル要素に記載されている最後の3ページネーションの属性を使用して、以前のフィルタを取り出しましたイベント、JavaScript関数、およびoutputTextフィールド。この回答は実際には元の質問には答えません(PF 5.1にはバグがあるかもしれないと思いますが)少なくとも回避策を提供します。

<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"> 
+0

それから新しいリリースで動作するかどうかを確認してみてください。 paginatorのPF行数が正しい量を示している場合、問題は他の場所にあります – Kukeltje

関連する問題