use*_*952 5 javascript csv jquery currency datatables
我有一个数据表,有4列保持货币.目前我将它们视为普通列,并手动将'$'附加到每个值.现在我需要将列格式化为逗号.有没有插件可以做到这一点?我还想删除'$'值的手动添加.我查了几个网站,但我真的不明白它们是如何工作的.
[更新使用DataTables 1.9+的答案,并尊重rynop的更好答案.原始答案保留在横向规则之下,但它既过时又效率低于应有的水平.
由于它实际上是您要修改的数据,而不是整个单元格,因此您应该使用列定义中的"render"属性.要生成干净的代码,您可以将实际的修改方法存储在其他地方,然后调用它:
var myTable = $('#mytable').DataTable({
...
"columns": [
{
"data" : "key_of_column",
"render" : function( data, type, full ) {
// you could prepend a dollar sign before returning, or do it
// in the formatNumber method itself
return formatNumber(data);
}
}
]
...
});
// elsewhere... probably more likely in a utility namespace or module
function formatNumber(n) {
return n.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
}
Run Code Online (Sandbox Code Playgroud)
formatNumber 使用这个接受的答案的正则表达式:
[原始答案]
我不会自己为每个单元添加美元值,这个决定具有降低您需要执行的复杂性的副作用.;-)在任何电子表格或货币值表中,您只需将货币符号放在标题或第一行中.将它放在标题中会使您的生活更轻松,将它放在第一行实际上会增加您的问题的复杂性.
所以,回到DataTables本身,你有多种方法可以为这只猫提供皮肤,但这里有两种:
使用逗号(即默认的DataTables行为)渲染整个表,但使用sClass参数向这些特定单元格添加类.然后使用fnDrawCallback触发逗号创建函数,如上面的链接所述.
仅使用上述链接中的正则表达式在数据进入时修改单元格.
像这样的东西(其中3是你正在修改的零索引列):
"aoColumnDefs": [ {
"aTargets": [3],
"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);
}
}]
Run Code Online (Sandbox Code Playgroud)
(aoColumnDefs是传递给你的初始化对象的一部分dataTable());
如果你绝对必须添加美元符号,你只需在功能之前将它添加到同一个text函数中.
我会在'aoColumns'中使用'mRender'方法.它更清洁,可能比目前接受的解决方案更有效.
例:
oTable = $('#mytable').dataTable( {
...
"aoColumns": [
{
"sTitle": "MyCol With Number",
"mRender": function( data, type, full ) {
return formatNumber(data);
},
...
Run Code Online (Sandbox Code Playgroud)
其中formatNumber的定义如下:
function formatNumber(n) {
return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
Run Code Online (Sandbox Code Playgroud)
使用fnRender还可以让您完全控制单元格 - 例如,如果您想用一些HTML包装数据.
有关完整规格,请参见http://www.datatables.net/usage/columns#mRender
| 归档时间: |
|
| 查看次数: |
15338 次 |
| 最近记录: |