我使用以下代码创建数据表并允许使用TableTools导出为各种格式。我通过ajax提取数据,但仅在开始时,因此所有过滤和排序等都在客户端,并且bServerSide设置为false。如果我直接填充表中的行,我可以获得所有过滤结果,但如果我使用ajax调用(这允许我利用“处理...”消息),它只导出当前页面的数据
var oTable = $('#dataTableAccountList').dataTable({
"sDom": "<'row'<'col-lg-6'l><'col-lg-6'Tf>r>t<'row'<'col-lg-6'i><'col-lg-6'p>>",
"bServerSide": false,
"bDeferRender": true,
"sAjaxSource": '@Url.Action("AccountLoadThroughAjaxCall", "AccountList")',
"bProcessing": true,
"oTableTools": {
"sSwfPath": "/Scripts/TableTools-2.2.0/swf/copy_csv_xls_pdf.swf",
"aButtons": [
{
"sExtends": "copy",
"oSelectorOpts": { filter: 'applied', order: 'current' }
},
{
"sExtends": "xls",
"oSelectorOpts": { filter: 'applied', order: 'current' },
"sFileName": "AccountList_yyyy-MM-dd_hh.mm.ss.xls"
},
{
"sExtends": "pdf",
"oSelectorOpts": { filter: 'applied', order: 'current' },
"sFileName": "AccountList_yyyy-MM-dd_hh.mm.ss.pdf",
"sPdfOrientation": "landscape",
"sPdfMessage": "Account List" + ($('div.dataTables_filter input').length > 0 ? " Filter: " + $('div.dataTables_filter input').val() : "")
},
{
"sExtends": "print",
"oSelectorOpts": { filter: 'applied', order: 'current' },
}
]
}
});
我再次确信我错过了一些简单的东西,但看不出它是什么。
提前致谢!
答案 0 :(得分:1)
我无法将sAjaxSource与bServerSide一起使用:false。我认为你不能。 我不得不将json对象转换为列表列表,而是使用aaData参数。
见这里: http://datatables.net/release-datatables/examples/data_sources/ajax.html 和这里: http://datatables.net/examples/data_sources/js_array.html