我正在进行分页,我正在使用DataTables插件,在某些表上它可以工作,但在某些表上它会出错:
未捕获的TypeError:无法读取未定义的属性'aDataSort'
我的页面脚本如下:
$(document).ready(function() {
$('.datatable').dataTable( {
"scrollY": "200px",
"scrollCollapse": true,
"info": true,
"paging": true
} );
} );
// HTML代码
<table class="table table-striped table-bordered datatable">
<thead>
<tr>
<th><?php echo lang('date_label')?></th>
<th><?php echo lang('paid_label')?></th>
<th><?php echo lang('comments_label');?></th>
</tr>
</thead>
<tbody>
<?php foreach ($payments as $pay): ?>
<tr>
<td><?php echo dateformat($pay['time_stamp'], TRUE);?></td>
<td><?php echo format_price($pay['amount']);?></td>
<td><?php echo $pay['note'];?></td>
</tr>
<?php endforeach?>
</tbody>
</table>
不知道问题是怎么来的,我知道这是非常常见的错误,但我搜索并发现没有任何支持我的问题 .
有谁知道解决方案?
4 回答
在你的代码中使用类似下面的内容来禁用
DataTables
上的排序(改编自我的一个使用最新DataTables
的项目)aoColumns
数组描述每列的宽度及其sortable
属性,根据您自己的表(数量)列的需要进行调整 .我遇到了同样的问题,后来在columnDefs下的“targets”属性中发现了输入错误 . 见下面的例子,
错误代码如下,
更正 - 在目标中错过了's':(
看起来当导致列未初始化的某些内容时会发生此错误 . 在这种情况下,我检查了事件'preInit.dt'没有被触发 .
希望这有助于某人 .
我使用KnockoutJS遇到了这个问题,因为当javascript尝试将DataTable应用于它时,尚未定义列 . 我使用knockoutJS的方法是将我的数据绑定代码移动到一个淘汰模板中,并使用afterRender事件将DataTable应用于表 .
以下是模板afterRender事件的knockoutJS docs链接 .
这是我的数据绑定的样子:
还有一个技巧 . 在setupDataTable函数中,表仍然没有完全设置,(我试图获得fixedHeaders并且宽度尚未设置) . 所以我用0毫秒的延迟调用setTimeout来让代码在第一个空闲周期运行 .
这是我的setupDataTable:
希望这有助于其他人寻找knockoutJS解决方案并遇到我遇到的同样问题 .
这个错误出现在我面前,我相信因为我的“mData”和“sTitle”未定义 .