2014-01-30 44 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回写回响应。再次感谢所有。