2015-01-20 25 views
2

我有一個使用門戶框架的寧靜web服務,它從數據庫中獲取數百行。我想每次使用頁碼10 | 20 | 30顯示10行,並在分頁顯示Dojo EnhancedGrid。我能夠用這個例子做分頁但是我的其餘網址正在加載數據庫中所有導致性能問題的記錄。應該有一些事件,每次當我點擊頁碼時,它應該調用其餘的URL並從數據庫中獲得10條記錄。我怎麼能做到這一點?Dojo在java中增強了網格分頁功能

+0

[Dojo EnhancedGrid分頁與Restful服務]的可能重複(http://stackoverflow.com/questions/27928106/dojo-enhancedgrid-pagination-with-restful-service) – 2015-01-21 03:17:26

+0

據我所知,它也有使用Rest服務實現,但我仍然找不到解決方案。你有沒有設法解決它不同? – cucicov 2015-02-12 13:30:45

回答

2

道場增強的網格分頁使得每次有必要(點擊下頁/末頁/上一頁/特定頁面/ X每頁結果等向後端REST服務的調用。)它通過範圍參數在請求的標題中,表明它請求當前查詢的項目數(即範圍項目= 0-9將返回前10個項目等等)。所以這是由分頁支持自動完成的。

您需要做的是在後端REST服務中讀取此參數並從數據庫返回指定的行。但要小心,分頁需要來自數據庫的一系列對象。

@GET 
@Path("getSearchResults") 
@Produces(MediaType.APPLICATION_JSON) 
public Response getSearchResults(@HeaderParam("Range") String range) { 
    // parse range String 
    // perform search 
    return Response.ok(responseList.toArray()).header("Content-Range", "items " + startItem + "-" + endItem + "/" + totalItems).build(); 
} 

而且響應應該包含返回的項目數和總項目編號,以便分頁知道多少頁在網格中顯示,它也顯示了網格的左下角總。此響應返回到響應的標題以及以下參數中:內容範圍項目0-9/120。 對於沒有效果,請使用內容範圍:*/0

在道場方面:

store=new JsonRest({ handleAs: 'json', target: 
        '{pathToServices}/rest/services/getSearchResults'}); 
grid = new EnhancedGrid({ 
     id: "gridId", 
     store: new ObjectStore({ objectStore: store}), 
     structure: getGridStructure(), 
     plugins: { 
      pagination: { 
       pageSizes: ["25", "50", "100"], 
       description: true, 
       sizeSwitch: true, 
       pageStepper: true, 
       gotoButton: true, 
       maxPageStep: 4, 
       position: "bottom"}, 
     } 
    }); 

這就是你需要做的,增強的網格分頁需要的一切照顧。