2017-01-02 72 views
0

如何用分页记录已勾选的框值。当我检查3页上的值。它只存储最后一页的值和其他值的删除。DataTable服务器端处理如何在分页上记录已选中的框

我在下面用到了客户端处理。

$('.button').click(function() { 
    var id = ""; 
    var oTable = $("#example").dataTable(); 
    $(".checkboxClass:checked", oTable.fnGetNodes()).each(function() { 


    }); 
}); 
+0

它不起作用。因为如果点击分页中的下一页,它将删除DOM中的先前页面元素并用新元素替换。所以我们不能读取复选框的值。 –

回答

1

退房jQuery DataTables Checkboxes延伸和server-side processing example,其中的复选框的状态被保留。

例如:

var table = $('#example').DataTable({ 
    'processing': true, 
    'serverSide': true, 
    'ajax': '/lab/jquery-datatables-checkboxes/ids-arrays.php', 
    'columnDefs': [ 
     { 
     'targets': 0, 
     'checkboxes': { 
      'selectRow': true 
     } 
     } 
    ], 
    'select': { 
     'style': 'multi' 
    }, 
    'order': [[1, 'asc']] 
}); 

我们还在adding state saving/loading capability工作很快将允许保留页面重新加载之间的复选框状态。

+0

如何将rowID推送到一个我可以稍后使用的数组 –

0

请问您可以使用会话存储中的值而不是var id =“”。

+0

会话存储? –

0

它不起作用。因为如果点击分页中的下一页,它将删除DOM中的先前页面元素并用新元素替换。

但是我们可以存储在数组中,然后在ajax中使用它。

var checkedArray=[]; 
$(document).on('change','.checkboxClass',function(){ 
    if($(this).is(':checked')) 
    { 
    //if checked add to array 
    checkedArray[checkedArray.length]=$(this).val(); 
    }else{ 
    //If unchecked remove the value from the array 
    var index=checkedArray.indexOf($(this).val()); 
    if (index > -1) { 
    checkedArray.splice(index, 1); 
    } 
} 
}); 

//then you can use it in click event 
$('.button').click(function() { 
var id = ""; 
//read checkedArray using for loop 

}); 

工作小提琴:http://jsbin.com/fewigaxesa/edit?js,console,output

+0

评论不适用于扩展讨论;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/132812/discussion-on-answer-by-sarath-kumar-datatable-serverside-process-how-to-remeber)。 –

+0

@Sarath Kumar:这不适用于以下情况。我检入单个复选框。然后我切换同一页面中的所有内容,在页面中全部切换。但是我检查过的单个复选框值仍然在我的数组中。而不是删除。请咨询 –

+0

请更新jsbin !. –

相关问题