我通过循环访问data.courseApplications并为每个元素添加一个新行并添加每个列来解决它,例如: row.add([{data.courseApplications [i] .col1,...,data.courseApplications [i] .colN}])。但这感觉不够
我是jQuery DataTables的新手,我正在尝试重新初始化数据表 超链接上的单击事件。初始化数据表工作正常(使用敲除绑定,创建表等),但是当我单击另一个事件时,数据表将不会重新初始化。
我在两个不同的方面攻击了这个问题,其中一个我清除现有的数据表并重绘它。第二种方法是销毁数据表并重新创建它。
当我尝试重新初始化时出现以下错误:首先清除数据表,然后添加数组" data.courseApplications" (包含正确的数据)作为行。
DataTables警告:table id = coursemoment-info-table - 请求的未知参数' 0'对于第0行,第0列。有关此错误的详细信息,请参阅http://datatables.net/tn/4
此错误发生在" viewOnClickEvent" -method中。 请注意 数据表"显示"正确数量的条目/行,但没有内容。
$("#coursemoment-info-table").DataTable().rows.add(data.courseApplications);
以下代码显示了我的第一次尝试。
Html:
<div class="row mb-0" data-bind="visible:!loadingCourseMoment()">
<div class="col-md-12">
<div class="card-block pt-0">
<div class="table-responsive">
<table id="coursemoment-info-table" class="table table-hover">
<thead>
<tr >
// headers
</tr>
</thead>
<tbody>
<!-- ko foreach: selectedCourseMoment().courseApplications -->
<tr>
// bindings
</tr>
<!-- /ko-->
</tbody>
</table>
</div>
Init datatable:
private initCourseMomentInformationDataTable(): void {
$("#coursemoment-info-table").DataTable({
pageLength: 5,
order: [1, 'desc'],
language: {
url: "/Assets/js/jquery-datatable-swedish.json"
}
});
}
重绘clickevent:
public viewCourseApplicationsClick = (selectedCourseMoment: ICourseMoment): void => {
this.loadingCourseMoment(true);
this.courseService.getCourseMomentByCourseNumber(selectedCourseMoment.courseNr)
.then((data: any) => {
this.selectedCourseMoment(data);
if (this.tableInitiliazed) {
$("#coursemoment-info-table").DataTable().clear().draw();
$("#coursemoment-info-table").DataTable().rows.add(data.courseApplications);
$("#coursemoment-info-table").DataTable().columns().draw();
} else {
this.initCourseMomentInformationDataTable();
this.tableInitiliazed = true;
}
this.loadingCourseMoment(false);
}).catch((reason:any) => {
console.log(reason);
});
}
我错过了什么?