Datatables 加载表之前激发的DataTable初始化事件

Datatables 加载表之前激发的DataTable初始化事件,datatables,Datatables,我有一个页面,其中jQuery数据表来自Ajax,并使用npm treeGrid插件绘制。该表绘制得很好,但我正在尝试捕捉表加载的结尾,以便做一些事情(在扩展树时准备好额外的数据)。init.dt事件或initComplete选项在绘制表之前被激发。如果我在事件中放置了一个警报,它将在绘制桌面和底部之后但在呈现数据之前显示。如果我试图访问表数据,它是未定义的 重要提示:如果从DataTable选项中删除treeGrid对象,则会得到相同的行为。我甚至删除了treeGrid javascript

我有一个页面,其中jQuery数据表来自Ajax,并使用npm treeGrid插件绘制。该表绘制得很好,但我正在尝试捕捉表加载的结尾,以便做一些事情(在扩展树时准备好额外的数据)。init.dt事件或initComplete选项在绘制表之前被激发。如果我在事件中放置了一个警报,它将在绘制桌面和底部之后但在呈现数据之前显示。如果我试图访问表数据,它是未定义的

重要提示:如果从DataTable选项中删除treeGrid对象,则会得到相同的行为。我甚至删除了treeGrid javascript

所以我的问题是:在一切都准备就绪的情况下,如何让代码运行

下面是Datatble的两个实现,使用init.dt或initComplete。我还添加了columns对象。下面是警报的两个屏幕截图,然后是绘制的表格

$(document).ready(function () {
    $('#mainTable')
        .on('init.dt', function () {
            alert('Table initialisation complete')
        })
        .DataTable({
            "ajax": '/API/RRate',
            'treeGrid': {
                'left': 20,
                'expandIcon': '<span>+</span>',
                'collapseIcon': '<span>-</span>'
            },
            "columns": columns
        });
});

$(document).ready(function () {
    $('#mainTable')
        .DataTable({
            "ajax": '/API/RRate',
            'treeGrid': {
                'left': 20,
                'expandIcon': '<span>+</span>',
                'collapseIcon': '<span>-</span>'
            },
            "columns": columns,
            "initComplete": function (settings, json) {
                alert('Table initialisation complete')
            }

        });
});

var columns = [
    {
        title: '',
        target: 0,
        className: 'treegrid-control',
        data: function (item) {
            if (item.children) {
                return '<span>+</span>';
            }
            return '';
        }
    },
    {
        title: 'Name',
        target: 1,
        data: function (item) {
            return item.name;
        }
    },
    {
        title: 'HeadCount',
        target: 2,
        data: function (item) {
            return item.headCount;
        }
    },
    {
        title: 'Responded',
        target: 3,
        data: function (item) {
            return item.responded;
        }
    },
    {
        title: 'Percentage',
        target: 4,
        data: function (item) {
            return item.percentage;
        }
    },
    {
        title: 'InProcess',
        target: 5,
        data: function (item) {
            return item.inProcess;
        }
    },
];
$(文档).ready(函数(){
$(“#主表”)
.on('init.dt',函数(){
警报(“表格初始化完成”)
})
.数据表({
“ajax”:“/API/RRate”,
“树蛙”:{
"左":20,,
“expandIcon”:“+”,
“collapseIcon”:“-”
},
“列”:列
});
});
$(文档).ready(函数(){
$(“#主表”)
.数据表({
“ajax”:“/API/RRate”,
“树蛙”:{
"左":20,,
“expandIcon”:“+”,
“collapseIcon”:“-”
},
“列”:列,
“initComplete”:函数(设置,json){
警报(“表格初始化完成”)
}
});
});
变量列=[
{
标题:“”,
目标:0,
className:“treegrid控件”,
数据:功能(项目){
if(项目.子项){
返回“+”;
}
返回“”;
}
},
{
标题:“姓名”,
目标:1,
数据:功能(项目){
返回item.name;
}
},
{
标题:“员工人数”,
目标:2,
数据:功能(项目){
返回项目。编制;
}
},
{
标题:"回应",,
目标:3,
数据:功能(项目){
返回项目。已响应;
}
},
{
标题:“百分比”,
目标:4,
数据:功能(项目){
返回项目。百分比;
}
},
{
标题:“进程中”,
目标:5,
数据:功能(项目){
返回item.inProcess;
}
},
];

好的,我找到了如何做到这一点:

function AfterLoad()
{
    table.rows().each(function () {
        console.log(this.cells(0));
        var rowData = this.data();
        console.log(rowData[0]);
    });
}

$(document).ready(function () {
    table = $('#mainTable')
        .DataTable({
            "ajax": '/API/RRate',
            'treeGrid': {
                'left': 20,
                'expandIcon': '<span>+</span>',
                'collapseIcon': '<span>-</span>'
            },
            "columns": columns,
            "initComplete": function (settings, json) {
                AfterLoad();
            }

        });
});
函数后加载()
{
table.rows().each(函数(){
console.log(this.cells(0));
var rowData=this.data();
console.log(rowData[0]);
});
}
$(文档).ready(函数(){
表=$(“#主表”)
.数据表({
“ajax”:“/API/RRate”,
“树蛙”:{
"左":20,,
“expandIcon”:“+”,
“collapseIcon”:“-”
},
“列”:列,
“initComplete”:函数(设置,json){
后负荷();
}
});
});

init事件的问题是否只是您无法访问“tabledata”?同样,tabledata是指datatables对象还是其他对象?