所以我在下面有这个代码。
$(document).ready(function() {
function getCodeNameSpecsSize(data, type, dataToSet) {
return data[3] + ", " + data[4] + ", " + data[5] + ", " + data[6];
}
function getTotalPrice(data, type, dataToSet) {
return data[7] * data[9];
}
var table = $('#incoming_material').dataTable( {
"aProcessing": true,
"aServerSide": true,
"scrollY": 350,
"scrollX": true,
"deferRender": true,
"ajax": "Scripts/server-response-im.php",
"aoColumns": [
{"data": "1", "sClass": "align_center"},
{"data": "2", "sClass": "align_center"},
{"data": getCodeNameSpecsSize, "sClass": "align_center"},
{"data": "7", "sClass": "align_center"},
{"data": "8", "sClass": "align_center"},
{"data": "9", "sClass": "align_center"},
{"data": "10", "sClass": "align_center",
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
var $currencyCell = $(nTd);
var commaValue = $currencyCell.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
$currencyCell.text(commaValue);
}
},
{"data": getTotalPrice, "sClass": "align_center",
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
var $currencyCell = $(nTd);
var commaValue = $currencyCell.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
$currencyCell.text(commaValue);
}
},
{"data": "11", "sClass": "align_center"},
{ "mData": null , "sClass": "align_center",
"mRender" : function ( data, type, full ) {
return '<a href="redirect_preview_po.php?c='+data[2]+'" target=_blank>Preview</a>';}
}
],
"aaSorting": [[0,'desc']],
dom: 'Bfrtip',
lengthMenu: [
[ 10, 25, 50, -1 ],
[ '10 rows', '25 rows', '50 rows', 'Show all' ]
],
buttons: [
'pageLength',
'print',
'copyHtml5',
'excelHtml5',
'csvHtml5',
'pdfHtml5',
'colvis'
],
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
我使 getCodeNameSpecsSize 功能正常工作,但 getTotalPrice 功能无效。该表显示 NaN 值而不是qty * unit_price。
QTY = data[7];
Unit Price = data[9];
提前致谢。任何帮助将不胜感激。
答案 0 :(得分:1)
您可能想要检查数据类型[7]和数据[9]。如果它们是字符串类型,则乘法可能不起作用。
尝试使用parseInt(data [7])* parseInt(data [9])并查看是否有效。
答案 1 :(得分:1)
您正在尝试将函数传递给data:
,但这不是它所期望的。该选项应指向数据中的字段。如果您希望该列显示该函数计算的数据,那就是render:
的用途。
作为一个注释,您将1.10之前的表示法与1.10之后的表示法混合在一起;例如,当您应该使用mRender
时,您正在使用render
。所有hungarian notation都可以而且应该被新的符号替换。
无论上述注意事项如何,以下是如何使用列来呈现将data[7]
和data[8]
传递给getTotalPrice
函数的结果的数据。
{"data": null, "sClass": "align_center",
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
var $currencyCell = $(nTd);
var commaValue = $currencyCell.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
$currencyCell.text(commaValue);
},
"render": function ( data, type, row, meta ) {
return getTotalPrice(row);
}
}
请注意,data:
已替换为null。这是因为数据不在原始数据源中,而是从其他字段计算。
另一个主要变化是添加了render
选项。
我不确定fnCreatedCell
应该做什么,但如果这不起作用,请尝试对其进行评论,因为它可能会或可能不会干扰render
。< / p>
答案 2 :(得分:0)
我的代码现在正在运行。我的错。在我重新检查了所有内容后,我得到了unit_price = data [10];不是数据[9];因此,结果不可用或NaN。谢谢你的支持,伙计们。