【问题标题】:jQuery dataTable isn't sorting new datajQuery dataTable 没有对新数据进行排序
【发布时间】:2014-09-24 10:32:54
【问题描述】:

我正在使用 jQuery dataTable 库,但遇到了问题。我有一些允许更改表格单元格值的事件处理程序。发生此类更改后,然后单击具有新更改数据的列的列标题。它使用所有行,但是当我第一次单击该列时,具有新数据的行仍根据其原始值进行排序。以下是我正在使用的两个函数。

所以,fnDraw() 没有达到预期的效果。

//called once, after page load completes
function drawTable()
{
    $('#mytable').dataTable({"bFilter": false,
                                       "bSort": true,
                                       "bInfo": false,
                                       "bPaginate": false,
                                       "bDestroy": true});
}

//called each time a table cell value is changed
function initTable()
{ 
    var oTable = $('#mytable').dataTable();
    oTable.fnDraw();
    //fnDraw is not having the desired effect
}

【问题讨论】:

    标签: javascript jquery html datatables


    【解决方案1】:

    我从 DataTables 网站上找到了一个活生生的例子,他们有一个直接处理这类问题的例子。此外,它们还展示了如何使用文本和数字对选择列表和输入进行实时排序。

    http://www.datatables.net/examples/plug-ins/dom_sort.html

    如果有更好的答案,我很乐意看看。目前,我觉得他们的榜样是要走的路。

    【讨论】:

      【解决方案2】:

      你也测试过吗:

      //called each time a table cell value is changed
      function initTable()
      { 
          var oTable =  $('#mytable').dataTable({"bFilter": false,
                                         "bSort": true,
                                         "bInfo": false,
                                         "bPaginate": false,
                                         "bDestroy": true});
          oTable.fnDraw();
          //fnDraw is not having the desired effect
      }
      

      ?

      【讨论】:

      • jacoh,这确实有效,但会带来副作用。那是:该表考虑了新数据(好),但立即重新使用整个表,就好像用户单击了第一行一样。
      • 在 initTable() 函数中使用 "bSort": false 吗?
      • 我没有使用 jQuery.dataTable() 插件,但我读到 fnDraw() 会重绘表格,所以重新排序的行为似乎正常且可以接受?
      【解决方案3】:

      除了@jacouh 的重新初始化表的解决方案之外,还可以尝试在DataTables 选项中设置"bStateSave": true。这应该让 DataTables 设置一个 cookie 来记住用户的排序偏好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-13
        • 2023-03-22
        • 2019-06-30
        • 1970-01-01
        • 2017-11-25
        • 2023-04-06
        • 2021-01-05
        相关资源
        最近更新 更多