我有以下格式的响应dataTable(Responsive doc.):

var dataTableInfo = j$('[id$="dataTableInfo"]').DataTable({
                 responsive: {
                    "autoWidth": true,
                    details: {
                        type: 'column',
                        target: 0
                    }
                },
                columnDefs: [ {
                    className: 'control',
                    orderable: false,
                    targets:   0
                } ]
            });

通过搜索到外部数据源,我用数据填充了数据,然后在DataTable内有了第二个表,该表中有其他数据(在子行中)是由实例化自动生成的。我可以单击第一列中的图标以展开并显示子行,一切正常。

我要完成的工作是在所有数据加载完毕后自动通过此DataTable的Javascript扩展子行(我知道这在回调函数中何时发生)。

我尝试了以下多种变体:
function ExpandTable(){
        var tab = j$('[id$="dataTableInfo"]').DataTable();
        alert(tab);

        tab.rows().every( function () {

            this.child.show();

        } );
    }

但是我的表根本不会扩展其子行。控制台没有任何反应,也没有错误消息。

谁能帮我解释一下例如我如何根据此模拟按钮单击:
$('#example tbody').on( 'click', 'tr', function () {
var child = table.row( this ).child;

if ( child.isShown() ) {
    child.hide();
}
else {
    child.show();
}} );

或以其他任何方式自动执行子行的这种扩展。

再见!

最佳答案

原因

响应式插件似乎执行其自己的子行管理,这也许就是row().child.show()不起作用的原因。



我正在使用未公开的responsive._detailsDisplay()方法来触发子行的显示。

// Enumerate all rows
table.rows().every(function(){
    // If row has details collapsed
    if(!this.child.isShown()){
        // Expand row details
        table.settings()[0].responsive._detailsDisplay(this, false);
    }
});



有关代码和演示,请参见this example

链接

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

关于javascript - 自动展开响应数据表的子行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30919799/

10-12 14:45