JQuery Datatables 在所有可用页面上获取所有“选中”复选框

Posted

技术标签:

【中文标题】JQuery Datatables 在所有可用页面上获取所有“选中”复选框【英文标题】:JQuery Datatables Get all "checked" checkboxes over all available pages 【发布时间】:2020-11-23 14:39:25 【问题描述】:

希望您能帮我找到解决我遇到的这个问题的方法。 重点是我有一个视图——带有数据表的 C# 和 JQuery——它绘制了一个包含数千行的数据表。 数据表是分页的,它的第一列有一个复选框 dom 对象,用户可以检查所有这些对象,一个或特定的。 当用户提交页面时,我只得到了用户访问的最后一页的选中项,而我需要的是数据表中所有可用页面的所有选中行。 有谁知道如何编写返回该代码的代码?

我已经拥有的代码是这个(只返回最后一页检查的行):

var rows_selected = $('input[type="checkbox"]:checked')
        var index = 0;
        rows_selected.each(function () 
            console.log('ListadoActores[' + index + ']'),
            $('<input>', 
                type: 'hidden',
                value: $(this).attr('id').replace('chk', ''),   
                id: $(this).attr('id').replace('chk', ''),
                name: 'ListadoActores[' + index + ']',
                ).appendTo('#GenFileForm');
            index = index + 1;
        );

        $("#GenFileForm").submit();

希望你能帮我解决这个问题。 提前致谢。

【问题讨论】:

如果您正在使用数据表(尤其是使用“拆分”成页面的预渲染表),那么您需要使用数据表 API(既可以设置刻度值,也可以读取它们背部)。每次更改页面时,数据表都会完全破坏所有 html 并从其数据存储中重建它(它们不只是设置为 display:none)。因此,在使用数据表时,永远不要从 HTML 中读取数据。 我建议你使用这个插件来做复选框:datatables.net/extensions/select 【参考方案1】:

正如@freedomn-m 所说,您需要访问 Datatables API 才能获取所有数据。

在提交时,放置一些如下代码:

var table = $('#example').DataTable();
var rows = []; 
table.rows().every( function () 
    var d = this.data(); //this will get the data for the row.
    rows.push(d); 
 );
//You can then POST the rows and work with them 

【讨论】:

以上是关于JQuery Datatables 在所有可用页面上获取所有“选中”复选框的主要内容,如果未能解决你的问题,请参考以下文章

Google Web App中的jQuery DataTables“表中没有可用数据”

JQuery UI Sortable + DataTables显示所有行而不刷新当前页面

当前页面的 JQuery DataTables 列复选框

如何使用 jQuery DataTables 从所有页面提交复选框

jQuery DataTables - 访问所有行数据

将分页的 jQuery DataTables 表的所有数据发送到服务器端,而不仅仅是当前页面