我使用Datatable创建了一个表,并且还导出了数据id pdf和excel。有一列序列号(S.No。),其索引号。是1.Table正在网页中工作。但是当文件导出时,标题显示的是序列号但文件中没有显示数字。 请参阅下面的代码。 如果有任何解决方案。请告诉我。 感谢
$(document).ready(function() {
var t = $('#log').DataTable( {
dom: 'Blfrtip',
buttons: [
{
extend: 'pdf',
title: 'Activity Report',
footer: true,
exportOptions: {
columns: [1,2,3,4,5]
}
},
{
extend: 'excel',
title: 'Activity Report',
exportOptions: {
columns: [1,2,3,4,5]
},
footer: false
} ,
{
extend: 'print',
title: 'Login Activity Report',
exportOptions: {
columns: [1,2,3,4,5]
},
footer: true
}
]
});
t.on( 'order.dt search.dt', function () {
t.column(1, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;
});
}).draw();
});
答案 0 :(得分:1)
我假设您的列名来自数据库,并且您在运行时为所有列分配值。我还假设您的列名如下NAME,ACCOUNT,AGE,SALARY,然后将列呈现给数据库时,通过以下方式在其中添加一个名为srno
的空列。
"aoColumns": [
{
"data": "srno",
"defaultContent": "" // WHICH IS CHANGED TO SR NO
},]
这里我们将空值分配给第0列。因此在导出选项中,您必须将其更改为
exportOptions: {
columns: [0,1,2,3,4]
}
我们这样做是因为columns是数据表jquery中的一个数组。
$(document).ready(function() {
var t = $('#log').DataTable( {
dom: 'Blfrtip',
buttons: [
{
extend: 'pdf',
title: 'Activity Report',
footer: true,
exportOptions: {
columns: [0,1,2,3,4]
}
},
{
extend: 'excel',
title: 'Activity Report',
exportOptions: {
columns: [0,1,2,3,4]
},
footer: false
} ,
{
extend: 'print',
title: 'Login Activity Report',
exportOptions: {
columns: [0,1,2,3,4]
},
footer: true
}
]
"aoColumns": [
{
"data": "srno",
"defaultContent": "" // WHICH IS CHANGED TO SR NO
},
{ "mData": "NAME" },
{ "mData": "ACCOUNT" },
{ "mData": "AGE" },
{ "mData": "SALARY" }
]
});
t.on( 'order.dt search.dt', function () {
t.column(1, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;
});
}).draw();
});
今天我遇到了同样的问题,经过一些R& D我来到这个解决方案。虽然现在解决问题为时已晚,但我希望它能帮助我们社区的其他读者。
答案 1 :(得分:1)
据我所知,您需要在PDF页面上打印索引列,该页面将显示在您的网页上,即它应始终以1开头。
t.on( 'order.dt search.dt', function () {
t.column(1, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;
t.cell(cell).invalidate('dom');
});
}).draw();
答案 2 :(得分:0)
对于序列号列,我们需要根据参考数据表论坛link
导出时更改字符串的值以下解决方案有效
$(function()
{
var oTable = $('#ReportsOrdersTable').DataTable({
bFilter: false,
dom: 'lBfrtip',
processing: true,
serverSide: true,
responsive: true,
autoWidth:true,
buttons: [
{
extend: 'excelHtml5',
exportOptions: { orthogonal: 'export' }
},
{
extend: 'pdfHtml5',
exportOptions: { orthogonal: 'export' }
}
],
ajax: {
url: 'reports/report_customer_order_list',
type: 'POST',
data: function (d) {
d.from = $('input[name=from]').val();
d.to = $('input[name=to]').val();
d.order_status = $('#order_status').val();
},
},
columnDefs: [ {
targets : 'no-sort',
orderable: false,
}],
"order": [[ 0, "desc" ]],
columns: [
{ data: 'id', name: 'id', render: function (data, type, row) {
return type === 'export' ?
data.toString() :
data;
}},
{ data: 'firstname', name: 'firstname' },
{ data: 'email', name: 'email' },
{ data: 'booking_count', name: 'booking_count',render: function (data, type, row) {
return type === 'export' ?
data.toString() :
data;
} },
{ data: 'payments_amount', name: 'payments_amount' },
],
});
});
答案 3 :(得分:0)
使用Jquery数据表未将自动生成的索引列导出到生成的文件(pdf,excel)中
t.on('draw', function () {
t.rows({ search: 'applied', order: 'applied', filter: 'applied' }).data().each(function (d, i) {
d[0] = i + 1;
});
});
t.on('order.dt search.dt', function () {
t.column(0, { search: 'applied', order: 'applied' }).nodes().each(function (cell, i) {
cell.innerHTML = i + 1;
});
}).draw(false);
此功能正常工作