LƯU Ý: Tôi đang sử dụng Bootstrap 1, chứ không phải 2: nhưng nó có thể phù hợp với bạn.
Sau nhiều thử và sai, đây là chức năng tôi đã thêm để có được những DataTable để vẽ lại khi tab đúng được nhấp (không phàn nàn về vẽ lại, một trong hai):
$(function() {
$('a[href="#tab2"]').live('click', function() {
var oTable = $('#dataTables4').dataTable();
oTable.fnDraw();
});
});
Đây là mã DataTable tôi. Lưu ý gọi lại để đảm bảo rằng bảng sẽ được vẽ hoàn toàn trước khi được hiển thị:
$('#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
});
Hy vọng điều này sẽ hữu ích.
Vâng, tôi đã làm điều đó. Đã phải làm một số gian lận để phát hiện nếu bảng đã được trả lại bởi vì DataTables sẽ khiếu nại về tái dựng hình chính nó. Vì vậy, đây là một hack tốt, nhưng không phải là một giải pháp. Cảm ơn. – Gregg
Đánh dấu phần này là câu trả lời trừ khi/cho đến khi bề mặt giải pháp không hack. – Gregg