【问题标题】:Datatable - Cannot read property 'sSortAscending' of undefined数据表 - 无法读取未定义的属性 'sSortAscending'
【发布时间】:2020-06-21 02:40:21
【问题描述】:

我正在尝试重新加载数据表的数据。为此,我清理表然后动态添加行。

JS

 if ($.fn.DataTable.isDataTable('#tbl_mostrar_alarmas')) {
        $('#tbl_mostrar_alarmas').DataTable().clear().rows.add(tablaModalData).columns.adjust().draw(); //I SUPPOSE THAT ERROR HERE 
    }

 $('#tbl_mostrar_alarmas').DataTable({
        'responsive': true,
        'bRetrieve': true,
        "bLengthChange": false,
        'pageLength': 5,
        "data": tablaModalData,
        "order": [
            0, 'desc'
        ],
        "columns": [{
                "data": "fecha",
                "defaultContent": "-",
            },
            {
                "data": "usuario",
                "defaultContent": "-"
            },
            {
                "data": "suceso",
                "defaultContent": "-",
            }
        ],
        "columnDefs": [{
            "targets": 0,
            render: function(data) {
                return moment(data).format('DD/MM/YYYY HH:mm');
            }
        }]

    })
}

HTML

<table id="tbl_mostrar_alarmas" class="table table-bordered table-striped table-hover">
   <thead>
      <tr>
         <th>DATA 1</th>
         <th>DATA 2</th>
         <th>DATA 3</th>
      </tr>
   </thead>
</table>

返回

jquery.dataTables.min.js:68 Uncaught TypeError: Cannot read property 'sSortAscending' of undefined

那么,有人知道这是怎么回事吗?

【问题讨论】:

  • 您使用的是旧版数据表吗?较新的版本使用$('#tbl_mostrar_alarmas').DataTable 和大写D。请更正。

标签: jquery html datatable datatables


【解决方案1】:

试试这样吧:

if ($.fn.DataTable.isDataTable("#achats_table")) {
    $('#tbl_mostrar_alarmas').DataTable().clear();
    $('#tbl_mostrar_alarmas').DataTable().destroy();
    $('#tbl_mostrar_alarmas').empty();
}

【讨论】:

  • @ElHombreSinNombre 这意味着它正在尝试在销毁完成之前重新创建表。如前所述,尝试使用大写字母 D 初始化数据表。要么用$("#tbl_mostrar_alarmas").dataTable().fnDestroy();替换我的前两行@
  • 我将数据表更改为数据表(我也更新了问题)并且同样的错误。
  • @ElHombreSinNombre 尝试在 sn-p 中重新创建问题。因为我给你的代码是重新初始化数据表的正确方法。如果错误仍然存​​在,那么问题来自其他地方,没有更多细节我无法猜测。
  • 我找到了解决方案并更新了帖子。无论如何感谢您的帮助。
  • @ElHombreSinNombre 很高兴尝试过;) 在单独的答案中发布您的解决方案,解释问题所在,并将其标记为已回答。
【解决方案2】:

解决方案

我找到了解决方案。当我尝试多次加载数据表配置时出现错误。为避免这种情况,我需要检查配置是否已加载(或未加载)并仅加载一次。

  if ($.fn.DataTable.isDataTable('#tbl_mostrar_alarmas')) {
        $('#tbl_mostrar_alarmas').DataTable().clear().rows.add(tablaModalData).columns.adjust().draw();
    } else {
        table();
    }

    var table = $('#tbl_mostrar_alarmas').DataTable({
                'responsive': true,
                'bRetrieve': true,
                "bLengthChange": false,
                'pageLength': 5,
                "data": tablaModalData,
                "order": [
                    0, 'desc'
                ],
                "columns": [{
                        "data": "fecha",
                        "defaultContent": "-",
                    },
                    {
                        "data": "usuario",
                        "defaultContent": "-"
                    },
                    {
                        "data": "suceso",
                        "defaultContent": "-",
                    }
                ],
                "columnDefs": [{
                    "targets": 0,
                    render: function(data) {
                        return moment(data).format('DD/MM/YYYY HH:mm');
                    }
                }]
            }

            table();

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2017-03-14
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多