【发布时间】:2017-02-04 00:09:26
【问题描述】:
我无法解决以下数据表错误:
SCRIPT5007:无法设置未定义的属性“_DT_CellIndex”或 空引用
我尝试查看整个互联网并发现this 是最好的解决方案。但我仍然无法解决这个问题。我在这里错过了什么吗?我是 JavaScript 新手。
【问题讨论】:
-
这是为我解决这个问题的answer
标签: javascript jquery datatables
我无法解决以下数据表错误:
SCRIPT5007:无法设置未定义的属性“_DT_CellIndex”或 空引用
我尝试查看整个互联网并发现this 是最好的解决方案。但我仍然无法解决这个问题。我在这里错过了什么吗?我是 JavaScript 新手。
【问题讨论】:
标签: javascript jquery datatables
基本上这个问题是因为 th 与 td 的匹配计数未命中。确保匹配到 td 的数量。希望这会对你有所帮助。
【讨论】:
$('#TableID').DataTable(),因此出现了这个问题。所以,我需要在加载表格数据后,在ajax调用的success: function()中调用这个函数。
我们有同样的错误!为我们解决的问题是根据从 0 开始的列数更改 dataTable 初始化中的 target。
在我们的表格中,我们有 4 列,所以 targets: [3]
$.extend($.fn.dataTable.defaults,{
columnDefs: [{
targets: [3]
}]
});
【讨论】:
在我的情况下,连续使用 colspan,单元格的数量与表格标题不匹配,因此显示此错误。您可以添加这些隐藏单元格以消除该错误。
试试这个
<tr>
<td colspan="4">details</td>
<td style="display: none"></td>
<td style="display: none"></td>
<td style="display: none"></td>
</tr>
添加所需的单元格但隐藏它们
【讨论】:
【讨论】:
当数据表中没有数据时,我遇到了错误。桌子是空的。添加一条记录后,错误消失了。
【讨论】:
我修好了。这是 js 部分与 html。
当我删除html列并忘记删除看起来像这样的js列时出现问题。
{"name": "Product", "orderable": true, "searchable": true},
一旦我删除了 js 中的额外列,一切都开始工作了。
【讨论】:
解决错误:
无法设置未定义的属性“_DT_CellIndex”
首先我告诉你$("id_tu_tabla").Datatable() 有最少的列数,它是 6。但是如果你有更少,你已经指定它,就像下面的代码:
$('#table').DataTable({ columnDefs: [ { goals: [4] }] }); }
【讨论】:
似乎很多人都因为 th 和 td 不匹配而得到错误。对我来说,我得到了似乎是逻辑错误的错误。看下面的代码。
注意:这是我在 Angular 7 中试验数据表,增强 *ngFor、ng-container、*ngIf 之类的东西,但别管这些,只看代码结构差异(交换 @ 987654321@ 和 ng-container)。
表头:
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
<th>Email</th>
<th>Organisation</th>
</tr>
</thead>
这会产生错误:
<tr *ngFor="let user of users; let index = index">
<ng-container *ngIf="showInactiveUsers">
<td>{{user?.firstName}}</td>
<td>{{user?.lastName}}</td>
<td>{{user?.email}}</td>
<td>{{user?.attributes?.organisation}}</td>
</ng-container>
<ng-container *ngIf="!showInactiveUsers && user?.enabled">
<td>{{user?.firstName}}</td>
<td>{{user?.lastName}}</td>
<td>{{user?.email}}</td>
<td>{{user?.attributes?.organisation}}</td>
</ng-container>
</tr>
像下面这样重新排列代码可以解决错误:
<ng-container *ngFor="let user of users; let index = index">
<tr *ngIf="showInactiveUsers">
<td>{{user?.firstName}}</td>
<td>{{user?.lastName}}</td>
<td>{{user?.email}}</td>
<td>{{user?.attributes?.organisation}}</td>
</tr>
<tr *ngIf="!showInactiveUsers && user?.enabled">
<td>{{user?.firstName}}</td>
<td>{{user?.lastName}}</td>
<td>{{user?.email}}</td>
<td>{{user?.attributes?.organisation}}</td>
<td *ngIf="user?.enabled">
</tr>
</ng-container>
【讨论】:
如果您要求显示带有“未找到记录”消息的行,如下代码
@if(Model.Count==0)
{
<tr>
<td colspan="3">
No record found.
</td>
</tr>
}
然后只需简单地删除此条件,因为数据表本身会附加“表中没有可用数据”消息,在我的情况下,它解决了我的错误
【讨论】:
我遇到了类似的问题,通过删除列名中的“$”符号得到了解决。希望这会有所帮助。
【讨论】:
检查表列的计数和dtColumnDefs。
如果您有 6 列,那么下面将是您对 dtColumnDefs 的配置。
self.dtColumnDefs = [
DTColumnDefBuilder.newColumnDef(0),
DTColumnDefBuilder.newColumnDef(1),
DTColumnDefBuilder.newColumnDef(2),
DTColumnDefBuilder.newColumnDef(3),
DTColumnDefBuilder.newColumnDef(4),
DTColumnDefBuilder.newColumnDef(5)
];
【讨论】:
我遇到了同样的问题。就我而言,我有 5 列,但在可排序的目标中,我设置了 7 列。所以请确保您没有在可订购目标中提到额外的列。
{ "orderable": false, "targets": [1,2,3,4] }
【讨论】: