DataTables 中导出 CSV 的自定义值 (jQuery)
Custom value for export CSV in DataTables (jQuery)
我正在使用自定义函数在 DataTable 列中呈现 HTML 图标,而不是显示纯文本:
{data: {newCost : "newCost", oldCost:"oldCost"},
title: "Difference",
render: {"display":function(data) {
if (parseFloat(data.newCost) > parseFloat(data.oldCost)) {
return '<i class="fas fa-arrow-up icon-red" data-sort="1" style="margin-left: 4px"></i>'
}
if (parseFloat(data.newCost) === parseFloat(data.oldCost)) {
return '<i class="fas fa-equals" data-sort="0" style="margin-left: 4px"></i>'
} else {
return '<i class="fas fa-arrow-down icon-green" data-sort="-1" style="margin-left: 4px"></i>'
}
}, "sort": function(data){
return data.newCost - data.oldCost;
}, "_":function(data){
return data.newCost - data.oldCost;
}
}
},
如您所见,我正在使用 render
函数根据 oldCost
和 newCost
的两个值之间的差异来显示箭头。但是当我使用导出按钮插件导出它时,该列显示空白 space。我想显示差异的纯文本值。
这可能吗?
您可以将差异存储为属性:
render: {"display":function(data) {
var difference = data.newCost - data.oldCost;
if (parseFloat(data.newCost) > parseFloat(data.oldCost)) {
return '<i data-value="'+difference+'" class="fas fa-arrow-up icon-red" data-sort="1" style="margin-left: 4px"></i>'
}
...
在 return 导出选项中的属性值:
{
extend: 'csvHtml5',
exportOptions: {
format: {
body: function(data, row, column, node) {
if (column == 42) { //dont know the index
return $(data).attr('data-value')
}
}
}
}
}
澄清一下:出现空白 space 是因为 <i>
元素的文本值为 ''
。
我正在使用自定义函数在 DataTable 列中呈现 HTML 图标,而不是显示纯文本:
{data: {newCost : "newCost", oldCost:"oldCost"},
title: "Difference",
render: {"display":function(data) {
if (parseFloat(data.newCost) > parseFloat(data.oldCost)) {
return '<i class="fas fa-arrow-up icon-red" data-sort="1" style="margin-left: 4px"></i>'
}
if (parseFloat(data.newCost) === parseFloat(data.oldCost)) {
return '<i class="fas fa-equals" data-sort="0" style="margin-left: 4px"></i>'
} else {
return '<i class="fas fa-arrow-down icon-green" data-sort="-1" style="margin-left: 4px"></i>'
}
}, "sort": function(data){
return data.newCost - data.oldCost;
}, "_":function(data){
return data.newCost - data.oldCost;
}
}
},
如您所见,我正在使用 render
函数根据 oldCost
和 newCost
的两个值之间的差异来显示箭头。但是当我使用导出按钮插件导出它时,该列显示空白 space。我想显示差异的纯文本值。
这可能吗?
您可以将差异存储为属性:
render: {"display":function(data) {
var difference = data.newCost - data.oldCost;
if (parseFloat(data.newCost) > parseFloat(data.oldCost)) {
return '<i data-value="'+difference+'" class="fas fa-arrow-up icon-red" data-sort="1" style="margin-left: 4px"></i>'
}
...
在 return 导出选项中的属性值:
{
extend: 'csvHtml5',
exportOptions: {
format: {
body: function(data, row, column, node) {
if (column == 42) { //dont know the index
return $(data).attr('data-value')
}
}
}
}
}
澄清一下:出现空白 space 是因为 <i>
元素的文本值为 ''
。