Ajax 数据表 bSortable 出错?

我正在使用AjaxDataTable查看书籍列表,还使用了cakePHP。这是我调用AjaxDataTable的脚本:

$(document).ready(function() {
    oTable = $('#base_discount').dataTable({
        "bProcessing": true,
        "bServerSide": true,
        "sPaginationType": "full_numbers",
        "aoColumns"   : [{"sClass": "center"}, null, null,{"sClass": "center"} ,{"sClass": "center"},{"sClass": "center"},{"sClass": "center"}, {"bSortable": true,"sClass": "center"}, **{"bSortable": false,"sClass": "center"}**],
        "sAjaxSource": "<?php echo BASE_PATH?>xxx/xxx.ctp"
    });
});

在最后的aColumns中,我将bSortable设置为了false,并且在最后一列中,将复选框设置为选中和取消选中所有复选框。 这是一个用于检查和取消检查的脚本:

function toggle(source) {
    checkboxes = document.getElementsByName('foo');
    for(var i in checkboxes)
        checkboxes[i].checked = source.checked;
}

这个复选框运行良好,但在DataTable中,上一栏中的网格显示如下:https://i.stack.imgur.com/J3f4Z.png。请帮助我,谢谢!

ChatGPT尝试解决您的问题,仅供参考
看起来您的代码可能存在一些问题。


首先,在调用 dataTable() 方法时,您的 aoColumns 属性应包含列的配置信息。其中,每个对象都包含一个或多个选项,用于控制列的显示、排序等行为。


其中,如果要禁用排序,则应该设置 bSortable 选项为 false。例如,您可以使用以下代码配置某一列不可排序:

{
    "bSortable": false,
    "sClass": "center"
}

此外,如果要在 DataTable 中显示复选框,则应该在渲染 HTML 元素时使用列的数据。例如,您可以使用以下代码来渲染复选框:

{
    "mRender": function ( data, type, row ) {
        return '<input type="checkbox" name="foo" value="'+data+'">';
    },
    "bSortable": false,
    "sClass": "center"
}

上面的代码使用 mRender 选项定义了一个函数,该函数会在渲染列时调用。在函数中,可以使用列的数据(即 data 参数)来构造复选框的 HTML 代码。