【问题标题】:JQuery Datatable pagination with only the results for per pageJQuery Datatable 分页,只有每页的结果
【发布时间】:2014-02-03 15:12:29
【问题描述】:

以下是我的 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 中,我有一个从数据库表中获取全部数据的查询,比如 company,它在结果集中返回一百万行。

List<Company> companies =  fetchCompleteCompanyDataFromDb(); 

这个结果集然后过滤如下:

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

filteredCompanyList 是我在数据表中显示的列表,共有 10 行。 当用户单击分页的“下一步”按钮时,将触发一个新请求,该请求将再次获取完整的公司数据,然后过滤第二页的下 10 条记录。简而言之,每当用户单击下一个按钮时,都会触发获取一百万条记录的查询。

我需要知道当用户点击下一个按钮时,是否有办法只获取接下来要显示的 10 条记录

【问题讨论】:

    标签: jquery sql jquery-datatables jquery-pagination


    【解决方案1】:

    感谢您的意见。我能够解决这个问题。我的要求是一次只获取 10 条记录。当用户点击下一页时, 应该触发一个新请求,该请求将获取接下来要显示的 10 行。通过这种方式,我可以实现性能更好的分页。如果发现,有两个变量控制分页。它们是“iTotalRecords”和“iTotalDisplayRecords”。我将查询表以获取表中整行的计数并将其设置为“iTotalRecords”。然后我分配'iTotalDisplayRecords = iTotalRecords'。这样我会错误地通知插件我有整个行列表。但是在变量“iDisplayStart”和“iDisplayLength”的帮助下,我只会从数据库中获取所需的行数并以 json 格式写回响应。再次感谢大家。

    【讨论】:

      【解决方案2】:

      解决方案很可能在于 fetchCompleteCompanyDataFromDb() 的实现方式。根据您执行此操作的方式,您可能需要实现一个新功能:

      fetchPageFromDb(int pageNumber, int pageSize)
      

      很难建议任何特定的实现,因为我不知道 fetchCompleteCompanyDataFromDb() 是如何工作的,所以我假设您的分页需要作为形成查询的代码的一部分来实现。谷歌上关于如何在 SQL 中实现分页并报告你所学的内容。

      【讨论】:

        猜你喜欢
        • 2015-04-24
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 2014-10-01
        • 1970-01-01
        • 2013-10-14
        • 2017-06-15
        • 2016-01-09
        相关资源
        最近更新 更多