我有以下格式的响应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/