Javascript 排序后从Datatables.net获取数据

Javascript 排序后从Datatables.net获取数据,javascript,jquery,jquery-datatables,Javascript,Jquery,Jquery Datatables,我用它来显示一些数据。我还有用于向数据添加新行的输入。当我添加这一行时,我会重新初始化表,它会根据我给它的排序规则自动对新行进行排序。我的问题是:有没有一种方法可以按照当前查看的顺序从表中获取数据?每当我尝试 $('#tableCompetitors').dataTable().fGetData(), 它按数据添加到表中的顺序提供数据,而不是按数据显示的顺序提供数据 那么,有没有一个简单的方法来做我想做的事情呢 如果有帮助的话。原始数据源是从文本框提供的数组数组。我解析它,将它推送到一个数组中,

我用它来显示一些数据。我还有用于向数据添加新行的输入。当我添加这一行时,我会重新初始化表,它会根据我给它的排序规则自动对新行进行排序。我的问题是:有没有一种方法可以按照当前查看的顺序从表中获取数据?每当我尝试
$('#tableCompetitors').dataTable().fGetData()
, 它按数据添加到表中的顺序提供数据,而不是按数据显示的顺序提供数据

那么,有没有一个简单的方法来做我想做的事情呢


如果有帮助的话。原始数据源是从文本框提供的数组数组。我解析它,将它推送到一个数组中,然后将该数组用作数据源。

下面是一个使用3个API回调的解决方案

  • 为当前数据创建变量
  • CurrentData
    重置为
    fnPreDrawCallback
    中的空数组,该数组在呈现新表之前激发
  • fnRowCallback
    允许访问每行的数据数组,将该数组推入
    CurrentData
    数组
  • fnDrawCallback
    在呈现表后激发,现在可以访问
    CurrentData
    数组中的排序数据
  • JS


    演示:

    只是想给你另一个选择

    以下内容将获取表中的所有行,即使它们已被过滤掉:

    var currData = [];
    var oTable = $('#example').dataTable();
    
    oTable.$("tr").each(function(index, row){
        //generate your array here
        // like $(row).children().eq(0) for the first table column
        currData.push($(row).children().eq(0));
        // return the data in the first column
        currData.push($(row).children().eq(0).text());
    });
    
    或者,如果您只希望结果与过滤器匹配,则:

    var currData = [];
    var oTable = $('#example').dataTable();
    
    oTable.$("tr", {"filter":"applied"}).each(function(index, row){
        //generate your array here
        // like $(row).children().eq(0) for the first table column
        currData.push($(row).children().eq(0));
    
        // return the data in the first column
        currData.push($(row).children().eq(0).text());
    });
    
    currData将包含第一列数据的排序列表

    编辑: 将整行文本放入数组

    $(row + " td").each(function(index, tdData){
        currData.push($(tdData).text());
    });
    


    这样,您就可以对数组可以包含的内容进行更多的控制。我的2美分。

    我遇到这个问题时问了同样的问题。虽然公认的解决方案可能有效,但我找到了更好的方法:

    $("example").DataTable().rows({search:'applied'}).data()
    

    有关更多信息,请参阅文档。

    如果保存排序状态,则数据源的顺序是否重要?保存排序状态是什么意思?我需要排序后的数据,这样我就可以根据排序后的数据创建一个文档结构。不过,在我接受之前,我会等着看是否还有其他解决方案。谢谢
    $(row.children().eq(0)
    返回的是什么?它是包含行数据的数组吗?我自己也会试试看,但我现在不在我的开发机器上。它返回第一列。如果您想要列中的数据,可以
    $(行).children().eq(0).text()
    我想要整行作为数组。我可以只做`$(row.text(),或者其他类似的巫术吗?这段代码看起来有点干净,所以我很想探索它。
    $(row+“td”).each(函数(index,tdData){currData.push($(tdData.text());})
    $(row.children().each(函数(索引,tdData){currData.push($(tdData.text());})
    
    $(row).children().each(function(index, tdData){
        currData.push($(tdData).text());
    });
    
    $("example").DataTable().rows({search:'applied'}).data()