数据表 - 无法读取未定义的属性 'sSortAscending'

Posted

技术标签:

【中文标题】数据表 - 无法读取未定义的属性 \'sSortAscending\'【英文标题】: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。请更正。 【参考方案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();

【讨论】:

以上是关于数据表 - 无法读取未定义的属性 'sSortAscending'的主要内容,如果未能解决你的问题,请参考以下文章

数据表无法读取未定义的属性“长度”

REACT JS:未处理的拒绝(TypeError):无法读取未定义的属性“数据”

在使用 jquery 数据表时无法读取未定义的属性“样式”

“无法读取未定义的属性‘contentType’”

无法读取未定义(…)的属性“_aData” - 数据表

查找数据时无法读取未定义的属性“查找”