2014-01-30 60 views
1

的以下的JQuery數據表分頁是在我的JSP分頁數據表的代碼:只有結果每

$(document).ready(function() { 
    $('#paginatedTable').dataTable({ 
     "bServerSide" :true, 
     "sAjaxSource" :"/JQueryPagination/Myservlet", 
     "bProcessing" :false, 
     "sPaginationType" :"full_numbers", 
     "bJQueryUI" :false, 
     "aoColumns" : [ { 
      "mDataProp" :"Name" 
     }, { 
      "mDataProp" :"Address" 
     }, { 
      "mDataProp" :"Town" 
     } ] 
    }); 
}); 

在我的servlet,我有一個從數據庫表中獲取整個數據的查詢,說在返回結果集中有一百萬行的公司。

List<Company> companies = fetchCompleteCompanyDataFromDb(); 

此結果集,然後過濾,如下:

List<Company>filteredCompanyList = companies.subList(iDisplayStart,DisplayStart+iDisplayLength); 

filteredCompanyList是我顯示在所述數據表中,這是10行列表中。 當用戶點擊分頁的「下一步」按鈕時,會觸發一個新的請求,將再次獲取完整的公司數據,然後過濾第二頁的下10條記錄。簡而言之,無論用戶何時點擊下一個按鈕,都會觸發提取一百萬條記錄的查詢。

我需要知道是否有一種方式,當用戶點擊下一個按鈕,只有下一個10記錄顯示將被提取。

回答

1

對此的解決方案最有可能在於如何實現fetchCompleteCompanyDataFromDb()。這取決於你怎麼做,你可能想實現一個新功能:

fetchPageFromDb(int pageNumber, int pageSize) 

很難提出任何具體的實現,因爲我不知道fetchCompleteCompanyDataFromDb()是如何工作的,所以我假設你的分頁需要作爲形成查詢的代碼的一部分來實現。谷歌瞭解如何在SQL中實現分頁並回報你學到的東西。

2

感謝您的輸入..我能夠解決這個問題。我的要求是一次只取10條記錄。當用戶點擊下一頁, 應該被觸發一個新的請求,將獲取接下來的10行顯示。以這種方式,我可以更好地執行分頁。如果發現,有兩個變量,即控制分頁。他們是'iTotalRecords'&'iTotalDisplayRecords'。我將查詢該表以獲取表&中的整個行的計數,將其設置爲'iTotalRecords'。然後我做了一個'iTotalDisplayRecords = iTotalRecords'的任務。這樣我就會錯誤地通知插件我有整行的列表。但藉助變量'iDisplayStart'&'iDisplayLength',我只會從db &中獲取所需的行數作爲json回寫回響應。再次感謝所有。