2013-03-02 54 views
5

我使用Datatables来表示来自JSON的数据。 我的JSON如下:如何将多个数据放入数据列?

[{"name": "John Doe", "email": "[email protected]", "address" : "blah"}] 

在数据表我可以用轻松展现在3分DIFF列这3个信息的以下内容:

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

但问题是,我想表明“名字“和”电子邮件“,然后在第二栏中填写”地址“。 我该怎么做?请指导。

+2

看到这里http://www.datatables.net/forums/discussion/13321/mdata-with-function-on-multiple-columns/p1 – PSR 2013-03-02 12:48:06

+0

@PSR感谢您的展示方式。 +1 – LittleLebowski 2013-03-02 13:09:16

+0

这其中也是有帮助的:http://stackoverflow.com/questions/19777075/datatables-merge-columns-together – 2014-05-18 15:05:46

回答

11

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

例如,使用aoColumns而非aoColumnDefs:

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

然后定义在JavaScript范围这需要三个参数getNameAndEmail功能:传递回的数据,对数据的操作的类型,并且如果类型是“设置”,然后是要设置的数据。

function getNameAndEmail(data, type, dataToSet) { 
    return data.name + "<br>" + data.email; 
} 
5

,使其更短,你可以把它写这样

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

,结果

enter image description here

相关问题