【问题标题】:Not able to resolve Datatable SCRIPT5007: Unable to set property '_DT_CellIndex' of undefined or null reference无法解析数据表 SCRIPT5007:无法设置未定义或空引用的属性“_DT_CellIndex”
【发布时间】:2017-02-04 00:09:26
【问题描述】:

我无法解决以下数据表错误:

SCRIPT5007:无法设置未定义的属性“_DT_CellIndex”或 空引用

我尝试查看整个互联网并发现this 是最好的解决方案。但我仍然无法解决这个问题。我在这里错过了什么吗?我是 JavaScript 新手。

【问题讨论】:

  • 这是为我解决这个问题的answer

标签: javascript jquery datatables


【解决方案1】:

基本上这个问题是因为 th 与 td 的匹配计数未命中。确保匹配到 td 的数量。希望这会对你有所帮助。

【讨论】:

  • 这对我来说基本上就是这样。添加的列数应与初始化的列数相同。
  • 节省了我的时间
  • 对我来说,我使用 ajax 将数据加载到表中,但在将任何数据加载到表中之前调用了函数 $('#TableID').DataTable(),因此出现了这个问题。所以,我需要在加载表格数据后,在ajax调用的success: function()中调用这个函数。
【解决方案2】:

我们有同样的错误!为我们解决的问题是根据从 0 开始的列数更改 dataTable 初始化中的 target

在我们的表格中,我们有 4 列,所以 targets: [3]

$.extend($.fn.dataTable.defaults,{
  columnDefs: [{ 
    targets: [3]
  }]
});

【讨论】:

    【解决方案3】:

    在我的情况下,连续使用 colspan,单元格的数量与表格标题不匹配,因此显示此错误。您可以添加这些隐藏单元格以消除该错误。

    试试这个

    <tr>
        <td colspan="4">details</td>
        <td style="display: none"></td>
        <td style="display: none"></td>
        <td style="display: none"></td>
    </tr>
    

    添加所需的单元格但隐藏它们

    【讨论】:

    • 您好,没有详细信息的答案并没有真正的帮助。您能否添加更多详细信息?为什么这会解决问题?
    • 在我的情况下,连续使用 colspan,单元格的数量与表格标题不匹配,因此显示此错误。您可以添加这些隐藏单元格以消除该错误。
    • 编辑你的答案:)
    【解决方案4】:

    在这里找到了这个答案:datatable forums

    一个简单的错误,表头有一列 " 没有 标题,但该列在表本身中不存在。我不能 看到它不见了(因为没有标题也没有边框)。

    成功了吗?

    【讨论】:

    • 好像不行.....你知道如何检查我的表格tad标签td是否与我的表格tbody td匹配吗?
    • 嗨 @a7madgamal 让我在 jsbin 上上传代码,但是 .. 下面是 IE 11 卡住的代码:-for ( i=0, iLen=oSettings.aoColumns.length ; i
    【解决方案5】:

    当数据表中没有数据时,我遇到了错误。桌子是空的。添加一条记录后,错误消失了。

    【讨论】:

      【解决方案6】:

      我修好了。这是 js 部分与 html

      当我删除html列并忘记删除看起来像这样的js列时出现问题。

              {"name": "Product", "orderable": true,  "searchable": true},
      

      一旦我删除了 js 中的额外列,一切都开始工作了。

      【讨论】:

        【解决方案7】:

        解决错误:

        无法设置未定义的属性“_DT_CellIndex”

        首先我告诉你$("id_tu_tabla").Datatable() 有最少的列数,它是 6。但是如果你有更少,你已经指定它,就像下面的代码:

        $('#table').DataTable({ columnDefs: [ { goals: [4]  }]  });  }
        

        【讨论】:

          【解决方案8】:

          似乎很多人都因为 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> 
          

          【讨论】:

            【解决方案9】:

            如果您要求显示带有“未找到记录”消息的行,如下代码

            @if(Model.Count==0)
                {
                    <tr>
                        <td colspan="3">
                            No record found.
                        </td>
                    </tr>
                }
            

            然后只需简单地删除此条件,因为数据表本身会附加“表中没有可用数据”消息,在我的情况下,它解决了我的错误

            【讨论】:

              【解决方案10】:

              我遇到了类似的问题,通过删除列名中的“$”符号得到了解决。希望这会有所帮助。

              【讨论】:

                【解决方案11】:

                检查表列的计数和dtColumnDefs

                如果您有 6 列,那么下面将是您对 dtColumnDefs 的配置。

                self.dtColumnDefs = [
                    DTColumnDefBuilder.newColumnDef(0),
                    DTColumnDefBuilder.newColumnDef(1),
                    DTColumnDefBuilder.newColumnDef(2),
                    DTColumnDefBuilder.newColumnDef(3),
                    DTColumnDefBuilder.newColumnDef(4),
                    DTColumnDefBuilder.newColumnDef(5)
                ];
                

                【讨论】:

                  【解决方案12】:

                  我遇到了同样的问题。就我而言,我有 5 列,但在可排序的目标中,我设置了 7 列。所以请确保您没有在可订购目标中提到额外的列。

                  { "orderable": false, "targets": [1,2,3,4] }
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2019-10-14
                    • 2013-08-10
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多