2016-01-11 117 views
0
var oTable = $('#table').dataTable({ 
    "bJQueryUI": true, 
    "aaData": jsonList, 
    "bPaginate": true, 
    "aoColumns": [ 
     { 
      "mDataProp": null, 
      "sClass": "control center", 
      "sDefaultContent": '<img src="http://i.imgur.com/SD7Dz.png">' 
     }, 
     { "mDataProp": "ente" }, 
     { "mDataProp": "cup" }, 
     { "mDataProp": "decreto" }, 
     { "mDataProp": "data" }, 
     { "mDataProp": "importoImpegno" }, //this is a currency 
     { "mDataProp": "finanziato" }, //this is a currency 
     { "mDataProp": "importoPagato" }, //this is a currency 
     { "mDataProp": "importoInPagamento" } //this is a currency 
    ], 
    "aoColumnDefs": [ 
    { "sClass": "currency", "aTargets": [ 5, 6, 7, 8 ]} 
    ], 
    "oLanguage": { 
     "sInfo": "_TOTAL_ entries" 
    }, 
    "aaSorting": [[1, 'asc']] 
}); 

正如您所見,我只將.currency類添加到貨幣的列。 我需要格式化這些貨幣(例如3235到3.235,00),我已經有了這個功能。創建dataTable時設置貨幣格式

function currencyFormatIT(num) { 

    if(num != null && num != "") { 
     num = parseFloat(num); 
     num = num 
     .toFixed(2) 
     .replace(".", ",") 
     .replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1."); 
    } 
    else { 
     num = ""; 
    } 

    return num; 
} 

我試圖用此方法,以便:

$("table.myTable > tbody td.currency").each(function(){ 
    $(this).html(currencyFormatIT($(this).html())); 
    $(this).css("text-align", "right"); 
}); 

但是,它的工作只出現在第一頁的數據表行:

First page

從第二頁開始:

Second page

如果我添加以下代碼:

$(document).on("click", "td.currency", function(){ 
    alert($(this).html()); 
}); 

適用於所有網頁上的所有TD!

1)爲什麼? 2)如果我要調用currencyFormatIT()函數類似的回調函數(也許在我創建數據表.dataTable({..代碼我該怎麼辦?

回答

0

可以使用fnDrawCallback功能。

var oTable = $('#table').dataTable({ 

    "fnDrawCallback": function (oSettings) { 
     // Format Currency here 
    } 

} 

你可以檢查documentation以獲得更多關於可能的回調函數的細節:

+0

好的,但是我應該怎麼傳遞給currencyFormatIT()函數呢?我該如何告訴他:「爲每個類貨幣調用currencyFormatIT()」? – Dave

+0

Works但是現在每次都調用currencyFormatIT()我改變了頁面或者對列進行了排序。這是不對的。有任何回調函數只被調用一次? – Dave

+0

@DavideFruci是不是你想要的?當您更改頁面時,您需要爲該頁面上的新數據設置貨幣格式。但是如果你只想調用一次,你可以使用fnInitCallback函數。 –