2017-03-07 29 views
2

私はPrimeFaces 6.0を使用しています。私は遅延読み込みを使用するデータテーブルを作成しています。私はloadメソッドにthis.setRowCount(count)を設定しました。私のページネーターは正しく表示されていません(無効な前、次、開始、終了ボタンが表示されます)。PrimeFacesデータテーブルページング機能が最初に遅延ロードで表示されない

テーブルをフィルタリングしたり並べ替えを変更すると、ページが表示されます。ハックを適用せずに作業ページネータを取得する方法について

PF('myTable').clearFilters(); 

任意のアイデア:私はこのJavaScriptを実行したときにも、ページネータはページを見せていますか?

これは、(関連する属性)私のテーブルです:

<p:dataTable value="#{controller.lazy}" 
      lazy="true" 
      var="subitem" 
      rowKey="#{subitem.id}" 
      paginator="true" paginatorPosition="bottom" 
      rows="10" 
      sortBy="#{subitem.emailAddress}" sortOrder="ascending" 
      widgetVar="myTable" 
> 

私の怠惰モデル(関連部分):あなたが外でもLazyDataModel#setRowCount(int n)を使用して行数を設定する必要がレイジーデータテーブルで

public class LazyDataModel<T> extends org.primefaces.model.LazyDataModel<T> 
{ 

    private final QueryBuilder<T> queryBuilder; 

    private final Class<T> type; 


    public LazyDataModel(final QueryBuilder<T> queryBuilder, final Class<T> type) 
    { 
    this.queryBuilder = queryBuilder; 
    this.type = type; 
    } 


    private void updateRowCount() 
    { 
    setRowCount(queryBuilder.count().intValue()); 
    } 


    @Override 
    public List<T> load(int first, int pageSize, List<SortMeta> multiSortMeta, Map<String, Object> filters) 
    { 
    if (filters != null) { 
     queryBuilder.addFilters(filters); 
    } 
    if (multiSortMeta != null) { 
     multiSortMeta.forEach(s -> queryBuilder.orderBy(s.getSortField(), s.getSortOrder() == SortOrder.ASCENDING)); 
    } 
    updateRowCount(); 
    TypedQuery<T> typedQuery = queryBuilder.createQuery(); 
    typedQuery.setMaxResults(pageSize); 
    typedQuery.setFirstResult(first); 
    return typedQuery.getResultList(); 
    } 


    @Override 
    public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) 
    { 
    List<SortMeta> multiSortMeta = null; 
    if (sortField != null && sortOrder != null) { 
     multiSortMeta = Arrays.asList(new SortMeta(null, sortField, sortOrder, null)); 
    } 
    return load(first, pageSize, multiSortMeta, filters); 
    } 

} 

答えて

関連する問題