从非ajaxified数据表获取所有筛选数据

时间:2014-03-13 04:42:21

标签: jquery ruby-on-rails ruby-on-rails-4 datatable jquery-datatables

我已使用数据表列出我的应用程序中的所有用户。我已经为管理员添加了执行"删除"的功能。对数据表中的过滤数据进行操作。例如,输入" R"在数据表的搜索框中列出所有可能包含字母" R"的数据。现在单击按钮"删除"会删除所有这些用户。我已经实现了这个逻辑,但它只从第一页获取数据:

 $("#delete-users").click(function(){
        var status = confirm("All the users currently showing in the table will be deleted. Do you want to continue?");
        if(status){
            var users = new Array();
            $("table#users tbody tr").each(function() {
                users.push(this.id);
            });

            $.ajax({
                type: "POST",
                url: "/users/delete_selected",
                data: {
                    users: users
                }
            })
            .always(function() {
                window.location.reload();
            });
        }
    });

但我想删除过滤集中的每个数据。请帮忙!感谢。

1 个答案:

答案 0 :(得分:2)

假设您正在使用dataTables v1.9或更高版本:您可以通过这种方式检索所有已过滤的行(请参阅下面的链接):

var filteredRows = dataTable._('tr', {"filter":"applied"});

您的功能应如下所示:

$("#delete-users").click(function(){
    var status = confirm("All the users currently showing in the table will be deleted. Do you want to continue?");
    if(status){
        var users = []; 
        var filteredRows = dataTable._('tr', {"filter":"applied"});
        filteredRows.forEach(function(row) {
            //push value for the column index that holds id for the user
            //0 is just a demonstration
            users.push(row[0]);
        });
        //
        //...
        //
    }
});

这是一个演示 - >的 http://jsfiddle.net/73DEd/

如果您使用的是1.9以下的dataTables版本,则必须使用插件,请参阅http://datatables.net/forums/discussion/214/how-to-get-searched-or-filtered-data/p1