I am getting an "SCRIPT438: Object doesn't support property or method 'formatCurrency'"" error when trying to format the currency for cells in a jQuery datatable using the jQuery formatCurrency library.
Code: jQuery DataTable initialisation:
var oTable = $('#tblTest').dataTable({
"bFilter": false,
"bInfo": false,
"aoColumns": [{ "bVisible": false }, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null],
"aaSorting": [[0, 'desc', 1]],
"bScrollInfinite": true, //this property disables pagination
"sScrollY": "230px",
"sScrollX": "940px",
"fnCreatedRow": function (nRow, aData, iDataIndex) {
RefreshGrid();
}
});
function RefreshGrid() {
var nRow = $('#tblTest').dataTable().fnGetNodes();
for (var i = 0; i < nRow.length; i++) {
var Total = (nRow[i].children[6].children[0].innerHTML * nRow[i].children[7].children[0].innerHTML).toFixed(2);
$("input[id$='hfFormat']").val(Total);
var unformatted = $("input[id$='hfFormat']").val();
var formatted = $("input[id$='hfFormat']").val(unformatted).formatCurrency().val();
nRow[i].children[8].children[0].innerHTML = formatted; //Total;
var Veriance = Total - nRow[i].children[11].children[0].value;
nRow[i].children[13].children[0].innerHTML = Veriance.toFixed(2);
nRow[i].children[9].children[0].disabled = true; //CrNo
nRow[i].children[10].children[0].disabled = true; //Allocate
nRow[i].children[11].children[0].disabled = true; //CrAmount
nRow[i].children[14].children[0].disabled = true; //Accept Veriance
nRow[i].children[15].children[0].disabled = true; //Edit
nRow[i].children[10].children[0].checked = false; //Allocate
nRow[i].children[14].children[0].checked = false; //Accept Veriance
nRow[i].children[15].children[0].checked = false; //Edit
nRow[i].style.backgroundColor = "";
if (nRow[i].children[12].children[0].defaultValue == "RejectedReturn") {
nRow[i].style.backgroundColor = "#FFEDE6";
}
else if (nRow[i].children[12].children[0].defaultValue == "CompleteWithVariance") {
nRow[i].children[15].children[0].disabled = false; //Edit
nRow[i].children[14].children[0].checked = true; //Accept Verianc
nRow[i].style.backgroundColor = "#D1D1D1";
}
else if (nRow[i].children[12].children[0].defaultValue == "Complete") {
nRow[i].children[15].children[0].disabled = false; //Edit
nRow[i].children[10].children[0].checked = true; //Allocate
nRow[i].style.backgroundColor = "#D1D1D1";
}
else if (nRow[i].children[12].children[0].defaultValue == "Outstanding") {
nRow[i].children[9].children[0].disabled = false; //CrNo
nRow[i].children[10].children[0].disabled = false; //Allocate
nRow[i].children[11].children[0].disabled = false; //CrAmount
nRow[i].children[14].children[0].disabled = false; //Accept Veriance
}
else if (nRow[i].children[12].children[0].defaultValue == "Partial") {
nRow[i].children[9].children[0].disabled = false; //CrNo
nRow[i].children[10].children[0].disabled = false; //Allocate
nRow[i].children[11].children[0].disabled = false; //CrAmount
nRow[i].children[14].children[0].disabled = false; //Accept Veriance
}
}
}
The same approach worked in other web pages but the only difference here is that RefreshGrid() is being called from the fnCreatedRow function whereas in the other instances it was called from the fnRowCallback and fnFooterCallback functions. The "unformatted" value will be present in the hidden field.