MVC jquery.dataTables无法获取未定义或空引用的属性“className”

时间:2014-03-20 23:03:55

标签: javascript jquery asp.net-mvc

我正试图让jquery.dataTables插件在MVC5中工作。
我已经添加了所有内容(库和css)并且正确地包含在我的包中,并且可以验证所有内容都存在,并且通过使用直接html标记创建第二个表来实现它。那个显示并具有dataTables基本功能。但我动态制作的表格会出现以下错误:

Unhandled exception at line 669, column 8 in .../Scripts/jquery.dataTables.js
Unable to get property 'className' of undefined or null reference. 

我已验证我的表格ID是否正确。

- 修正

- 不确定这是如何工作的。但我偶然发现了问题/解决方案。 无论如何我会提交这个,以防我发现有用。

THead部分有一个空单元格。 (<td></td>对)使TBody部分与单元格数不匹配。它可以通过添加另一个空的Body单元格或删除THead单元格来工作。显然,这两个项目必须一对一匹配。

2 个答案:

答案 0 :(得分:1)

不应该有任何空的<th>,足以使<td><th>的数量相匹配。你的解决方案是对的。

答案 1 :(得分:0)

visual studio脚手架生成的表没有 <thead><tbody>代码。

生成的表的默认结构是:

<table>
   <tr>
      <th>...</th>
      <th>...</th>
      <th></th>   <!-- the EMPTY header column -->
   </tr>
   <tr>
      <td>...</td>
      <td>...</td>
      <td>...</td>
   </tr>
   .
   .
   .
   <tr>
      <td>...</td>
      <td>...</td>
      <td>...</td>
   </tr>
</table>

请注意,默认情况下,最后一个标题列为空,因为在子行中它具有C RUD 命令:

  

编辑|细节|删除

要使DataTables生效,<thead>是强制性的,<tbody>是可选的。当您要添加<thead>标记时,最好添加<tbody>标记,仅用于可读性/对称性[恕我直言]。

使用当前版本的DataTables(1.10.9),它可以正常运行添加<thead>标记。

所需的最低结构是:

<table>
  <thead>
      <tr>
         <th>...</th>
         <th>...</th>
         <th></th>   <!-- it will work -->
      </tr>
  </thead>
  <tbody>   <!-- optional, just for readability -->
      <tr>
         <td>...</td>
         <td>...</td>
         <td>...</td>
      </tr>
      .
      .
      .
      <tr>
         <td>...</td>
         <td>...</td>
         <td>...</td>
      </tr>
  </tbody>
</table>

来源:刚刚重新测试了所有这些要点。