如何在dataTables中将数字数据右对齐

如何在dataTables中将数字数据右对齐,datatables,Datatables,我正在使用dataTables插件。我发现数字数据没有正确对齐 数据表就是这样工作的吗 我的数据格式是否有误 如何编写检查数据表中每个单元格的数据类型并将数据向右对齐(如果是数字)的功能 我使用的插件来自这里:定义datatables对象时,可以选择自定义列类型,包括添加css类。然后可以使用该类对该列执行任何操作 $('#myTable').dataTable( { "aoColumnDefs": [ { "sClass": "numericCol", "aTarge

我正在使用dataTables插件。我发现数字数据没有正确对齐

  • 数据表就是这样工作的吗
  • 我的数据格式是否有误
  • 如何编写检查数据表中每个单元格的数据类型并将数据向右对齐(如果是数字)的功能

我使用的插件来自这里:

定义datatables对象时,可以选择自定义列类型,包括添加css类。然后可以使用该类对该列执行任何操作

$('#myTable').dataTable( {
    "aoColumnDefs": [

      { "sClass": "numericCol", "aTargets": [ 0 ] }
      //You can also set 'sType' to 'numeric' and use the built in css.           
    ]
  } );
aTargets的值是要应用此类的列的索引

在你的CSS中有一些类似于

.numericCol{
  float:right;
}
这是我的解决办法

$('#itemTable1').dataTable({bPaginate:false,bFilter:false,bInfo:false,bSort:false});
$('#itemTable2').dataTable({bPaginate:false,bFilter:false,bInfo:false,bSort:false});
$('#itemTable3').dataTable({bPaginate:false,bFilter:false,bInfo:false,bSort:false});
$('#itemTable4').dataTable({bPaginate:false,bFilter:false,bInfo:false,bSort:false});
$(#itemTable5').dataTable({bPaginate:false,bFilter:false,bInfo:false,bSort:false});
//例如第四个例子
$('#itemTable4 td.numval').css('text-align','right');
//例如第五个例子
var tableData=['5100','Bacon',1,'KG',400','5101','Chilly',500,'GM',30','5102','Pepper',1,'KG',250];
$。每个(表数据、函数(i、项){
$('#itemTable5').DataTable().row.add([
tableData[i][0],
tableData[i][1],
tableData[i][2],
tableData[i][3],
tableData[i][4]
]).draw();
});
//加载数据后
$(“#itemTable5 tbody tr”).each(function(){(this).find('td:eq(2)')).addClass('numcol');$(this.find('td:eq(4)')).addClass('numcol');
});
$('#itemTable5 td.numcol').css('text-align','right')
表td.numcol{
文本对齐:右对齐;
}

示例1:使用“对齐”属性
项目Id
项目名称
项目数量
项目单位
项目价格
5100
培根
1.
公斤
400
5101
寒冷的
500
转基因的
30
5102
胡椒粉
1.
公斤
250
示例2:使用样式
项目Id
项目名称
项目数量
项目单位
项目价格
5100
培根
1.
公斤
400
5101
寒冷的
500
转基因的
30
5102
胡椒粉
1.
公斤
250
示例3:使用类
项目Id
项目名称
项目数量
项目单位
项目价格
5100
培根
1.
公斤
400
5101
寒冷的
500
转基因的
30
5102
胡椒粉
1.
公斤
250
示例4:对静态表使用JQuery
项目Id
项目名称
项目数量
项目单位
项目价格
5100
培根
1.
公斤
400
5101
寒冷的
500
转基因的
30
5102
胡椒粉
1.
公斤
250
示例5:对动态表使用JQuery
项目Id
项目名称
项目数量
项目单位
项目价格

以下是我的解决方案,适用于任何列的1.10.16版:

$.fn.table = function() {
  return this.each(function() {
    var self = $(this);
    self.DataTable({
      columnDefs: self.find('th').map(function() {
        var self = $(this);
        return {
          render: function(data, type, row, meta) {
            if (data === (+data).toString()) {
              return '<div style="text-align: right">' + data + '</div>';
            } else {
              return data;
            }
          },
          targets: self.index()
        };
      }).get()
    });
  });
};
$.fn.table=函数(){
返回此值。每个(函数(){
var self=$(这是);
self.DataTable({
columnDefs:self.find('th').map(函数(){
var self=$(这是);
返回{
呈现:函数(数据、类型、行、元){
if(data==(+data).toString()){
返回“”+数据+“”;
}否则{
返回数据;
}
},
目标:self.index()
};
}).get()
});
});
};

在1.10.19版中,要将第2列和第3列向右对齐,我执行以下操作:

$('#myDataTableHere').DataTable({
    columnDefs: [
        { targets: [1, 2], className: "right-aligned-cell" },
    ]
}
显然,我的CSS有一个类
以实际获得结果

注:
HTML文档建议,使用CSS类
.dt body right
也可以这样做。这对AJAX方法不起作用。

现在已经有几个小时了,我一直在绞尽脑汁想在“打印”模式下使数字向右对齐。有人知道如何在打印时使数字对齐

html我有很好的格式,但是当打印的时候,所有的东西都在左边

您可以使用某些功能,当检测到一种标签类型(如“”)时,可以为其内部的所有内容指定对齐方式。这样我们就可以把数字放在标签里,并将它们对齐到右边


非常感谢您给我的帮助。

在列定义中,您可以使用className:

$(“#tabDatos”).dataTable({
栏目:[
{数据:“fecha”},
{数据:“导入”,类名:“文本权限”}
]

});我使用ColumnDefs对齐数据:

"columnDefs": [{ targets: [3, 4, 5, 6, 7], className: 'dt-body-right' },
                           { targets: [0, 1, 2], className: 'dt-body-center' }],
  • 第3、4、5、6、7列与右侧对齐
  • 列编号0、1、2与中心对齐
或 通过直接应用类

 { 'data': 'TotalMaleFarmers',className: "text-center" },

从您的评论来看,您所说的实际上是通过
<link rel="stylesheet" type="text/css" media="print" href="/assets/print.css">

@media print{

img{display:none;}
.text-right{float: right; clear:none;}
etc...

}
$("#table1").dataTable({
  columns: [
    { data: "account name"}
    { data: "balance", className: "text-right" }
  ]
});