14

我正在使用数据表来表示来自 JSON 的数据。我的 JSON 如下:

[{"name": "John Doe", "email": "john@gmail.com", "address" : "blah"}]

在 Datatables 中,我可以使用以下内容轻松地在 3 个差异列中显示这 3 个信息:

columnDefs = [ 
                { "mData": "name", "aTargets":[0] },
                { "mData": "email", "aTargets":[1] },
                { "mData": "address", "aTargets":[2] }
             ]; 

但问题是我想在第一列显示“姓名”和“电子邮件”,然后在第二列显示“地址”。我怎样才能做到这一点?请指导。

4

4 回答 4

15

为了让它更短,你可以这样写

"aoColumns": [
    { "mData": "i_id" },
    { "mData": "i_name" },
    { "mData": function (data, type, dataToSet) {
        return data.i_id + "<br/>" + data.i_name;
    }}
],

和结果

在此处输入图像描述

于 2017-02-13T06:47:51.950 回答
14

您可以使用函数来获取和打印您想要的任何数据,而不是将姓名或电子邮件放在列定义的第一列中。有关更多详细信息,请参阅此页面上的 mData 部分:https ://datatables.net/usage/columns 。在下面的示例中,我使用了 aoColumns,因为我以这种方式测试了我的答案;但在引用的链接中,他们使用了 aoColumnDefs 并详细说明了 type 和 dataToSet 字段。无论您使用 aoColumns 还是 aoColumnDefs,这种方法都有望帮助任何阅读此答案的人。

例如,使用 aoColumns 而不是 aoColumnDefs:

aoColumns = [ 
    { "mData": getNameAndEmail },
    { "mData": "address" }
]; 

然后在 JavaScript 范围内定义 getNameAndEmail 函数,该函数接受三个参数:传回的数据,对数据的操作类型,如果类型为“设置”,则设置数据。

function getNameAndEmail(data, type, dataToSet) {
    return data.name + "<br>" + data.email;
}
于 2014-02-19T12:50:04.360 回答
14
columnDefs = [ 
            { 
             data: {name : "name", email : "email", address : "address"},
             mRender : function(data, type, full) {
                return data.name+' '+data.email+' '+data.address; 
              } 
            }
         ]; 

上面的代码可以在一个数据表的一列中渲染多个数据。

于 2018-04-24T14:32:52.587 回答
5

[你可以使用这样的语法:
它对我有用。]
"columnDefs":[{ "targets":0,//column index "data":"first_name", "render":function(data,type,row){ return data+' '+row['last_name']; } }]

[谢谢]

于 2019-04-02T21:54:39.627 回答