2012-01-02 5 views
2

В настоящее время я использую данные datatables с данными ajax, и я хочу отрегулировать ширину столбца. Так что я нашел эту функцию fnAdjustColumnSizing, и я пытаюсь использовать:Datatables fnAdjustColumnSize не работает после обработки ajax

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

+0

Существует способ использовать fnAdjustColumnSizing после OTABLE свиданий? – Awea

+0

он не работает ни –

0

У меня была аналогичная проблема в Internet Explorer 8 (не в Firefox): я получал свои заголовки не привязанными к телу таблицы.

Таблица инициализируется внутри диалогового окна «модальный» (twitter bootstrap), ПОСЛЕ того, как он отображается. Наконец, чтобы заставить его работать с Internet Explorer 8, после создания таблицы я делаю этот вызов:

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

Это обновляет таблицу без другого ненужного вызова Ajax, но он ждет 300 мс, прежде чем делать это, «позволить интернет-исследователю сделать свое дело» перед корректировкой. Если вы установите более низкие значения, то есть 10 мс), это не сработает. не

Я надеюсь, что это помогает,

Roger

Смежные вопросы