数据表按钮 - CSV 导出问题不采用单元格值
Datatable Buttons - CSV export issue not taking cell value
我遇到一个问题,即 csv 导出未导出使用 fnRowCallback 设置的值,我已尝试查看正交,但似乎无法正常工作。
我的按钮代码如下:
buttons: [
'selectNone',
'selectAll',
{
extend: 'csv',
title: 'Data export',
exportOptions: {
columns: colArr, rows: { selected: true }
}
}],
我正在页面加载时动态生成列,因为这不是固定的:
var Columns = [
{ "data": "Name" },
{ "data": "EmployeeNum", "sClass": "text-center" },
{ "data": "DateStartedS", "sClass": "text-center" },
{ "data": "DateCompletedS", "sClass": "text-center" },
];
for (var a = 0; a < QuestionLength; a++) {
Columns.push({ "data": "ID", "sClass": "text-center" });
}
Columns.push({ "data": "ID", "sClass": "text-center" });
完成后,我使用 fnRowCallback 从方法中获取值:
fnRowCallback: function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
var QuestionColumns = $("#tblPollsReport thead td.trquestion");;
$.each(QuestionColumns, function (idx, item) {
var QuestionID = $(item).attr("data-questionid");
var Result = FindAsnwer(QuestionID, aData["QuestionAsnwers"]);
debugger;
var QNum = idx + 4;
//$('td:eq(' + QNum + ')', nRow).val("Hallo");
$('td:eq(' + QNum + ')', nRow).html(Result);
})
//Actions
var ActoinHtml = '<div class="btn-group">';
ActoinHtml += '<button onclick="DeletePollUser(' + aData["ID"] + ')" title="Delete" class="btn btn-xs btn-danger js-tooltip"><i class="fa fa-times"></i></button>';
ActoinHtml += '</div>';
var ActionCol = (4 + QuestionLength);
$('td:eq(' + ActionCol + ')', nRow).html(ActoinHtml);
},
然而,一旦我导出,它使用的是我在添加到列时添加的原始值,而不是我在 fnRowCallback 中设置的值。
如有任何帮助,我们将不胜感激。
好的,我终于成功了
我修改了列部分以包含以下内容:
for (var a = 0; a < QuestionLength; a++) {
Columns.push({
"data": "ID", "sClass": "text-center", render: function (data, type, row, colinfo) {
if (type === 'export') {
//Any logic you would like to overide with
} else {
return data;
}
}
});
}
我遇到一个问题,即 csv 导出未导出使用 fnRowCallback 设置的值,我已尝试查看正交,但似乎无法正常工作。
我的按钮代码如下:
buttons: [
'selectNone',
'selectAll',
{
extend: 'csv',
title: 'Data export',
exportOptions: {
columns: colArr, rows: { selected: true }
}
}],
我正在页面加载时动态生成列,因为这不是固定的:
var Columns = [
{ "data": "Name" },
{ "data": "EmployeeNum", "sClass": "text-center" },
{ "data": "DateStartedS", "sClass": "text-center" },
{ "data": "DateCompletedS", "sClass": "text-center" },
];
for (var a = 0; a < QuestionLength; a++) {
Columns.push({ "data": "ID", "sClass": "text-center" });
}
Columns.push({ "data": "ID", "sClass": "text-center" });
完成后,我使用 fnRowCallback 从方法中获取值:
fnRowCallback: function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
var QuestionColumns = $("#tblPollsReport thead td.trquestion");;
$.each(QuestionColumns, function (idx, item) {
var QuestionID = $(item).attr("data-questionid");
var Result = FindAsnwer(QuestionID, aData["QuestionAsnwers"]);
debugger;
var QNum = idx + 4;
//$('td:eq(' + QNum + ')', nRow).val("Hallo");
$('td:eq(' + QNum + ')', nRow).html(Result);
})
//Actions
var ActoinHtml = '<div class="btn-group">';
ActoinHtml += '<button onclick="DeletePollUser(' + aData["ID"] + ')" title="Delete" class="btn btn-xs btn-danger js-tooltip"><i class="fa fa-times"></i></button>';
ActoinHtml += '</div>';
var ActionCol = (4 + QuestionLength);
$('td:eq(' + ActionCol + ')', nRow).html(ActoinHtml);
},
然而,一旦我导出,它使用的是我在添加到列时添加的原始值,而不是我在 fnRowCallback 中设置的值。
如有任何帮助,我们将不胜感激。
好的,我终于成功了
我修改了列部分以包含以下内容:
for (var a = 0; a < QuestionLength; a++) {
Columns.push({
"data": "ID", "sClass": "text-center", render: function (data, type, row, colinfo) {
if (type === 'export') {
//Any logic you would like to overide with
} else {
return data;
}
}
});
}