我目前正在使用带有ajax数据的数据表,我想调整列宽。 所以我发现这个函数fnAdjustColumnSizing并且我尝试使用它:
oTable = $('.datatable').dataTable( {
"sScrollX": "100%",
"sScrollXInner": "200%",
"bScrollCollapse": true,
"bDestroy" : true,
"sAjaxSource": "xhr.php",
"bFilter": false,
"bSort": false,
"bLengthChange": false,
"bPaginate": false,
"bInfo": false,
"fnServerData": function ( sSource, aoData, fnCallback ) {
$.ajax( {
"dataType": 'json',
"type": "POST",
"url": "webservice.php",
"data": 'id=' + quotation_id + '&customer_id=' + id + '&action=true',
"success": function(msg){
fnCallback(msg);
}
});
},
"fnInitComplete": function() {
this.fnAdjustColumnSizing();
}
});
该功能没有任何效果,但如果我在其他事件中使用它,如下所示:
$('#target').click(function() {
oTable.fnAdjustColumnSizing();
});
它运作良好,任何想法?
答案 0 :(得分:1)
你试过吗
"fnInitComplete": function() {
oTable.fnAdjustColumnSizing();
}
因为我不确定this
是否指向表格对象
答案 1 :(得分:0)
我通过在ajax查询的“success”回调中使用函数找到了一个解决方案:
$.ajax( {
"dataType": 'json',
"type": "POST",
"url": "webservice.php",
"data": 'edit_quotation=true&action=true' + data,
"success": function(msg){
fnCallback(msg);
$('.overlay').hide();
adjustTable();
}
});
function adjustTable(){
oTable.fnAdjustColumnSizing();
}
它就像魅力一样,但我不知道为什么。有人可以解释一下吗?
答案 2 :(得分:0)
我在Internet Explorer 8中遇到了类似的问题(不是在Firefox中):我的表头没有对齐表格。
该表在“模态”对话框(twitter bootstrap)内初始化,显示后。 最后,为了使它能够与Internet Explorer 8一起使用,在创建表之后我正在进行此调用:
var t = setTimeout(function () { myTableObject.fnAdjustColumnSizing(false);}, 300);
这会刷新表而不会进行另一次不必要的Ajax调用,但它会在执行之前等待300毫秒,以便“在重新调整之前让Internet Explorer执行其操作”。如果你设置较低的值,即10毫秒),这不起作用。
我希望它有所帮助,
罗杰