折叠所有子行作为DataTables中的默认值

时间:2019-03-23 07:21:06

标签: javascript codeigniter datatables

我正在从codeigniter控制器中获取数据,并使用数据表显示它。我想在子行中显示其他详细信息。我可以单击按钮打开和关闭以折叠所有子行,使其看起来像手风琴。所以我的问题是我想将所有子行都折叠为默认值,但仍然可以使用按钮将其关闭。我已经阅读了许多解决方案,但是仍然无法正常工作。这是我的代码

 function format ( d ) {
    // `d` is the original data object for the row
    return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
        '<tr>'+
            '<td>Add Ons</td>'+
            '<td>Remarks</td>'+
        '</tr>'+
        '<tr>'+
            '<td>---</td>'+
            '<td>'+d.remarks+'</td>'+
        '</tr>'+
    '</table>';
}

$(document).ready(function() {
    var table = $('#mydata').DataTable( {
             ajax: {
                 url: "/chef/get_orderlist",
                 dataSrc: ''
             },
            colReorder: {
            realtime: true
            },
            "aoColumns" : [
                {
                "className":      'details-control',
                "data":           null,
                "defaultContent": ''
                },
                {data : 'order_id'},
                {data : 'cust_name'},
                {data : 'table_code'},
                {data : 'menu_name'},
                {data : 'order_qty'},
                {
                    data: null,
                    render: function ( data, type, row, meta) {
                        return '<button id="status" class="status btn dt-buttons '+ data.item_status +
                        '" data-order_item_id="'+ data.order_item_id +'"'+
                        ' data-item_status="'+ data.item_status +'" onclick="change_status()">'+ data.item_status +'</button>';
                        }
                    }
                ]
            });

// FOR OPENING AND CLOSING THE ACCORDION
        $('#mydata tbody').on('click', 'td.details-control', function () {
                var tr = $(this).closest('tr');
                var row = table.row(tr);

                if ( row.child.isShown() ) {
                    // This row is already open - close it
                    row.child.hide();
                    tr.removeClass('shown');
                }
                else {
                    // Open this row
                    row.child( format(row.data()) ).show();
                    tr.addClass('shown');
                }
            } );

// THIS IS THE PART WHERE THE CHILD ROWS SHOULD BE OPENED AS "DEFAULT" 
         $("#mydata").DataTable().rows().every( function () {
                var tr = $(this.node());
                this.child(format(tr.data('child-value'))).show();
                tr.addClass('shown');
            });


} );

1 个答案:

答案 0 :(得分:0)

您复制了针对该特定问题的this answer

对于您而言,正确的代码应为:

{{1}}

有关更多示例和信息,请参见jQuery DataTables: jQuery DataTables: How to expand/collapse all child rows