2012-01-02 132 views
2

我目前使用數據表與ajax數據,我想調整列的寬度。 所以我發現這個功能fnAdjustColumnSizing,我嘗試使用它:數據表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

我發現用我的AJAX查詢的「成功」回調內部功能的解決方案:

$.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(); 
} 

它的工作就像一個魅力,但我不知道爲什麼。有人可以解釋嗎?

1

您是否嘗試過做

"fnInitComplete": function() { 
    oTable.fnAdjustColumnSizing(); 
} 

,因爲我不相信this指向表對象

+0

我想剛纔沒有成功:( – Awea 2012-01-05 14:41:37

+0

還有就是oTable分配後使用fnAdjustColumnSizing辦法? – Awea 2012-01-05 16:26:06

+0

它不工作也不 – 2016-01-13 20:14:49

0

我在Internet Explorer 8(不是在Firefox)中遇到類似的問題:我得到的表頭相對於表體沒有對齊。

該表在「模式」對話框(twitter引導程序)內初始化,在顯示之後。 最後,使其與Internet Explorer 8的工作,在創建表我在做這個調用之後:

var t = setTimeout(function() { myTableObject.fnAdjustColumnSizing(false);}, 300); 

這將刷新表未做其他不必要的Ajax調用,但這樣做之前等待300毫秒,在重新調整之前讓'互聯網瀏覽器做它的事'。如果你設置的值較低,即10毫秒),這是行不通的。

我希望它能幫助,

羅傑