如何在dataTable的单元格中添加多个JSON值

15
如何将多个JSON值添加到dataTable的单个单元格中。 我正在查看datatables文档,但找不到清晰的示例。 我有以下JSON字符串,通过会话访问它并放入了一个dataTable中。
<textarea id="Report" type="text" style="" name="Report">
    [
    {
    "Identifier": "0",
    "LastName": "Cooper",
    "FirstName": "Benny",
    "MiddleInitial": "P",
    "MRN": "7854753",
    "Age": "30",
    "Gender": "Female",
    "Location":
        {
            "Bed": "1",
            "Room": "A",
            "unit": "NU1",
            "facility": "Fac1"
        },
    "ServiceDate":"05/03/2013",
    "ChargeAndDx":"99222 - 410.01,428",
    "BillingProvider":"Palmer, James",
    "title":"Add",
    "start":"2013-08-07",
    "url":"#",
    "textColor":"red"
    }] </textarea>
在另一页上,我正在访问数据表中的会话,如下所示:

在另一页上,我正在访问数据表中的会话,如下所示:

$(document).ready(function (){

var ReportData=JSON.parse(document.getElementById("Report").innerHTML);
        Report=$('#patientDataTables').dataTable
        ({
            "bJQueryUI":true,
            "bScrollCollapse":true,
            aaData:patientReportData,
            "aoColumns":
                [   {"mData":"LastName","sClass":"left"},
                    {"mData":"ServiceDate","sClass":"left"},
                    {"mData":"ChargeAndDx","sClass":"left"},
                    {"mData":"BillingProvider","sClass":"left"},
                    {"mData":"null","sClass":"center","sDefaultContent":"<a href='' class='editor_menu'>menu</a>"}

                ]
        });

在我的数据表中,当姓氏出现时,我也想要名字、中间名字缩写、MRN和年龄。

这应该如何完成?如果有人知道一个快速的方法,请告诉我。

1个回答

32

在DataTables 1.10.x之前,您可以像这样使用mRender参数:

"aoColumns":[   
   {"mData":"LastName",
    "sClass":"left", 
    "mRender":function(data, type, full){
       return full.FirstName + full.LastName + full.MiddleInitial;
    }
   },
   {"mData":"ServiceDate","sClass":"left"},
   {"mData":"ChargeAndDx","sClass":"left"},
   {"mData":"BillingProvider","sClass":"left"},
   {"mData":"null","sClass":"center","sDefaultContent":"<a href='' class='editor_menu'>menu</a>"}
]

从DataTables 1.10.x开始,您可以像这样使用columns.render属性:

"columns":[   
   {"data":"LastName",
    "className":"left",
    "render":function(data, type, full, meta){
       return full.FirstName + full.LastName + full.MiddleInitial;
    }
   },
   {"data":"ServiceDate","sClass":"left"},
   {"data":"ChargeAndDx","sClass":"left"},
   {"data":"BillingProvider","className":"left"},
   {"data":"null","className":"center","defaultContent":"<a href='' class='editor_menu'>menu</a>"}
]

感谢您的回复。在等待回复的期间,我尝试了一种替代方法并克隆了JSON字符串。将名字、姓氏和中间缩写放入单个对象/字段中,然后将其传递给dataTable。但我会尝试这个方法。这看起来是一个简单的替代方案。 - patz
可以工作,但是你应该使用“data”参数,并将其设置为你拥有的JSON数组的当前行,因为如果你有更多的行,full将包含所有对象,而不仅仅是当前行。谢谢。 - Genaut
很棒的答案!此外:如果您需要这些字段可搜索,可以使用参数“visible”设置为“false”和“searchable”设置为“true”将它们添加到其他列中。这样,您将在一列中看到所有数据,但仍然可以进行搜索。 - José Manuel Blasco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接