UWAGA: Używam Bootstrap 1, nie 2: ale to może działać dla ciebie.
Po wielu prób i błędów, jest to funkcja dodałem uzyskać DataTable przerysować gdy prawidłowa zakładka został kliknięty (nie narzekają na przerysować, albo):
$(function() {
$('a[href="#tab2"]').live('click', function() {
var oTable = $('#dataTables4').dataTable();
oTable.fnDraw();
});
});
Oto mój dataTable kod. Zwróć uwagę na wywołanie zwrotne, które zapewnia, że tabela zostanie całkowicie narysowana przed wyświetleniem:
$('#loadingT').show();
$('#dataTables4').dataTable({
"fnDrawCallback":function(){
$('#loadingT').hide();
$(".dataListT").fadeIn(2000);
},
"bPaginate": false,
"bScrollCollapse": true,
"sScrollY": "305px",
"aaSorting": [[ 2, "desc" ],[3, "desc"]],
"sDom": "<'row'<'span16'f>>t<'row'i<'span8'><'span8'>>",
"aoColumns": [
{ "bSortable": false },
null,
null,
null,
null,
{ "iDataSort": 6 },
{"bVisible": false},
{"bVisible": false},
null
],
"fnFooterCallback": function (nRow, aaData, iStart, iEnd, aiDisplay) {
/* Calculate the total transactions on this page */
var total = 0;
for (var i=iStart ; i<iEnd ; i++)
{
total += aaData[ aiDisplay[i] ][7]* 1;
}
var nCells = nRow.getElementsByTagName('th');
nCells[1].innerHTML = total;
$(nCells[1]).formatCurrency({negativeFormat:'%s-%n'});
}
}).rowGrouping({
iGroupingColumnIndex: 1,
sGroupingColumnSortDirection: "desc",
iGroupingOrderByColumnIndex: 2
});
Mam nadzieję, że to pomoże.
Tak, już to zrobiłem. Musiałem wykonać pewne olinowanie, aby wykryć, czy tabela została już wykonana, ponieważ DataTables będzie narzekać na ponowne renderowanie się. Jest to dobry hack, ale nie rozwiązanie. Dzięki. – Gregg
Oznaczono jako odpowiedź, chyba że/do momentu pojawienia się rozwiązania niehackowego. – Gregg