2016-02-18 47 views
0

數量,我不知道如果我是對的,但據我所知,在顯示的頁面數量rich:datascroller基於填充數據表的列表大小。豐富:基於總的記錄頁datascroller號,而不是行從數據表

但這裏的東西:讓我們說,總共有20條記錄中顯示。我只想查詢它們中的10個,並使其成爲datascroller上的兩個頁面。我無法查詢我的所有記錄,因爲可能有超過300.000條記錄的時間。我不能把它留在記憶中。無論如何,這可以實現?

這裏是到目前爲止我的代碼:

<rich:datascroller for="grdPemissoes" maxPages="5" 
    reRender="contentResultadoTable, labelResultados" 
    page="#{actionDivisao.pageIndex}" 
    pageVar="#{actionDivisao.totalPages}" 
    eventsQueue="queueScroller" 
</rich:datascroller> 
<rich:dataTable id="grdPemissoes" rowClasses=" ,td_cinza" 
    value="#{actionDivisao.listaResultados}" 
    styleClass="table table-search-result" 
    var="divisao" rowKeyVar="row" 
    rows="#{actionDivisao.registrosPorPagina}"> 
         //columns 
</rich:dataTable> 

因爲總有10條記錄,沒有頁面中顯示。 我使用的是richfaces 3和jsf 1.2。

+0

你可以把那些20條記錄,並把它們放到'#{actionDivisao.listaResultados}' – Makhiel

+0

這是一樣的查詢所有的結果和在存儲puting他們。我只想查詢前10個結果,並讓datascroller認爲有超過10條記錄,因此頁面會顯示爲 –

+0

當數據模型用於數據表時,則頁數= listSize/recordPerPage。但在這種情況下,您不需要將所有列表存儲在內存中。您可以獲取與當前頁面相關的記錄。或者,您可以始終抓取兩倍的大小,並將其顯示在兩頁上。 –

回答

1

表使用一個數據模型(javax.faces.model.DataModel或延長它的一類),如果要更改默認的行爲,例如返回的粒度爲您加載多少記錄不同,你將需要實現自己的數據模型,並把它傳遞給表的值屬性:

public class MyDataModel extends org.ajax4jsf.model.ExtendedDataModel { 

    @Override 
    public int getRowCount() { 
     return this.list.size() + 10; // or something 
    } 

    … 
} 

您可以在showcase檢查的例子。

相關問題