如何使用' rows.add(...)'在jQuery DataTable中?

时间:2017-07-20 13:14:04

标签: typescript knockout.js datatables

  

我通过循环访问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);
        });
}

我错过了什么?

0 个答案:

没有答案