【问题标题】:get nested table row data in datatable获取数据表中的嵌套表行数据
【发布时间】:2018-04-25 11:57:21
【问题描述】:

我正在处理数据表,我需要在单击按钮时创建一个嵌套表。到目前为止我已经这样做了,但无法获取嵌套数据表行数据。

我以this 为例。到目前为止,这就是我为获取行数据所做的工作。

oInnerTable = $('#opiniondt_' + iTableCounter).dataTable({
        data: newArr, 
        autoWidth: true, 
        deferRender: true, 
        info: false, 
        lengthChange: false, 
        ordering: false, 
        paging: false, 
        scrollX: false, 
        scrollY: false, 
        searching: false, 
        columns: [
            {   
                className:      'inner-details-control',
                orderable:      false,
                data:           null,
                defaultContent: '' 
            },
            {"mData": "datasetId"}, 
            {"mData": "name"},
            {"mData": "datasetType", "visible": false},
            {"mData": "parentDatasetID", "visible": false},
            {"mData": "description", "visible": false},
            {"mData": "totalRecords"},
            {"mData": "creationTimeStr"},
            {"mData": "endTimeStr"},
            {bSortable: false,
                mRender: function (o) {return '<button class="btn btn-blue innerDatasetDetailButton" id="innerDatasetDetailButton"><i class="fa fa-check"></i></button>'; }
            }
        ],
        order: [[1, 'asc']]
    });

$('#opiniondt_' + iTableCounter + ' tbody').unbind().on("click", "td.inner-details-control", function () {
        var tr = $(this).closest('tr');
        var row = oInnerTable.row( tr );
        var rowData = oInnerTable.row( tr ).data();  
        iTableCounter = iTableCounter + 1;

        if (row.child.isShown()) {
            row.child.hide();
            tr.removeClass('shown');
        }
        else {
            //createInnerTable(tr, row, rowData);
        }
   });

我已经用oInnerTable 初始化了内表,但它在oInnerTable 上给了我错误

TypeError: oInnerTable.row 不是函数

谁能告诉我如何从嵌套数据表中获取行数据?

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    初始化表格时需要使用('#opiniondt_' + iTableCounter).DataTable(...) - 注意大小写的区别。如果您使用dataTable(...),您会在oInnerTable 中获得一个jQuery 对象,而不是您需要发出row() 命令的DataTables API 对象。

    【讨论】:

    • 好的,但我的问题是如何从内部表中获取行数据?这个解决方案不能解决我的问题
    • 您已经使用 var rowData = oInnerTable.row( tr ).data(); 语句获取行数据,但由于您没有 DataTables 的 API 句柄,而只有一个 jQuery 句柄,所以它因该错误而失败。
    • 我已经通过使用另一种数据表 API 的方式解决了这个问题:var row = $('#opiniondt_' + iTableCounter).dataTable().api().row( tr );
    • 是的,这也获得了 DataTables 句柄,两者都有效! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    相关资源
    最近更新 更多