如何将数据表分页中的记录发送到服务器类

Posted

技术标签:

【中文标题】如何将数据表分页中的记录发送到服务器类【英文标题】:How to send to records in data table pagination to the server class 【发布时间】:2017-06-21 16:18:36 【问题描述】:

当我单击全选(超链接)选项或我想要特定页面中的特定记录(使用复选框)到服务器类时,我试图在 jQuery 数据表中发送所有记录,但问题是当我单击表单提交时按钮即导出 PDF 仅获取当前页面中的记录,即使在 jquery 数据表分页中的其他页面中选择了记录。

<s:form id="downloadStudentDetailsForm" action="downloadStudentDetails" theme="css_xhtml" cssClass="form-horizontal">

<div class="dataTable_wrapper">
<table  class="table table-striped table-bordered table-hover" id="dataTS">
<thead>
<tr>
<th><a href="#" id="selectall">Select all</a></th>
<th>Student Name</th>
<th>Parent Phone</th>   
<th>Parent Email</th>                                                       
<th>ReferenceID</th>
</tr>
</thead>
<tbody>
<s:iterator value="studentRecords">
<tr>
<td><s:checkbox name="students" cssClass="case chkPassport" fieldValue="%studentname+' '+phone+' '+email+' '+ref"  /></td>                                                            
<td><s:property value="studentname" /></td> 
<td><s:property value="phone" /></td>   
<td><s:property  value="email"></td>                                                        
<td><s:property value="ref" /></td>
 </tr>
 </s:iterator>
 </tbody>
 </table>
 </div>
 <div class="col-xs-1 ">
 <s:submit cssClass="btn btn-success" value="Export to Excel" id="exl" action="downloadStudentsListINExcel" />
 </div>
 <div class="col-xs-3 ">
 <s:submit cssClass="btn btn-danger" value="Export to PDF" id="pdf" action="downloadStudentsListInPDF" />
 </div>   
 </s:form> 

脚本

$("#selectall").click(function() 
        var rows = table.rows( 'search': 'applied' ).nodes();

       debugger;
       if($('.case:checkbox:checked', rows).length == rows.length)
         $('.case', rows).prop('checked', false);
        
        else
         $('.case', rows).prop('checked', true);
       


    $('#dvcount').html($(rows).find(".case:checkbox:checked").length);

    $("body").on("change","input",function() 

        var rows = table.rows( 'search': 'applied' ).nodes();
        $('#dvcount').html($(rows).find(".case:checkbox:checked").length);

    );

       );
          );

【问题讨论】:

【参考方案1】:

请看这里:How can I select all checkboxes from all the pages in a jQuery DataTable

答案应该是:

var allPages = table.fnGetNodes();

【讨论】:

【参考方案2】:

我已经为复选框提供了 ID,然后下面的代码对我有用

 $(document).ready(function()   
            $('#yourDataTableID').DataTable();  
            $("#button").click(function()   
                var chcklist = new Array();  
                var oTable = $('#yourDataTableID').dataTable();  
                var rowcollection =  oTable.$("#checkboxID:checked", "page": "all");  
                rowcollection.each(function(index,elem)   
                    chcklist.push($(elem).val());    
                );       

                 $.ajax(
                      type : 'POST',
                       url: "/DataTableQuery/checkPaginatedData",
                      dataType : 'JSON',
                      data : list: chcklist,
                      success : function(data, success)            

                
              ); 
            );  
        );

【讨论】:

以上是关于如何将数据表分页中的记录发送到服务器类的主要内容,如果未能解决你的问题,请参考以下文章

Kendo Grid中的服务器端分页?

如何在 Angular 4 ngx 分页中显示每页的记录

如何在分页中获取特定行的页码

关于criteria分页中获取总记录数异常问题

分页工具栏没有收到总数

在mean.io堆栈中表达js分页