以下是我的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中,我有一个查询从数据库表中获取整个数据,比如说公司在结果集中返回了100万行。
List<Company> companies = fetchCompleteCompanyDataFromDb();
然后按如下方式过滤此结果集:
List<Company>filteredCompanyList = companies.subList(iDisplayStart,DisplayStart+iDisplayLength);
filteredCompanyList
是我在数据表中显示的列表,即10行。
当用户单击分页的“下一步”按钮时,将触发新请求,将再次获取完整的公司数据,然后过滤第二页的下10条记录。简而言之,每当用户单击下一个按钮时,就会触发一个获取一百万条记录的查询。
我需要知道,当用户点击下一个按钮时,是否有一种方式,只会显示要显示的下一个 10条记录。
答案 0 :(得分:2)
感谢您的投入......我能够解决问题。我的要求是一次只能获取10条记录。当用户点击下一页时 应该触发一个新请求,该请求将获取要显示的下一行10行。通过这种方式,我可以实现具有更好性能的分页。如果发现,有两个变量,即控制分页。他们是'iTotalRecords'&amp; 'iTotalDisplayRecords'。我将查询表格以获取表格中的整行数量。将它设置为'iTotalRecords'。然后我做了'iTotalDisplayRecords = iTotalRecords'的作业。这样我就会错误地通知插件我有整个行列表。但是在变量“iDisplayStart”和“变量”的帮助下'iDisplayLength',我只会从db&amp;中获取所需的行数。以json的形式回写响应。再次感谢所有人。
答案 1 :(得分:1)
这方面的解决方案很可能在于如何实现fetchCompleteCompanyDataFromDb()。根据您的操作方式,您可能希望实现一个新功能:
fetchPageFromDb(int pageNumber, int pageSize)
很难建议任何特定的实现,因为我不知道fetchCompleteCompanyDataFromDb()是如何工作的所以我假设您的分页需要作为构成查询的代码的一部分来实现。谷歌如何在SQL中实现分页并报告你所学到的内容。