根据特定的JSON结构在数据表中设置列

时间:2015-08-27 17:29:21

标签: jquery datatables

我有一个JSON文件,我希望使用DescFatorAvaliacao属性在jquery datatable mDataProp列中显示。

但是,由于JSON中的父节点DesdobramentoList,我遇到了一些困难。

如何将数据表列设置为DescFatorAvaliacao

JavaScript功能

function loadAvaliacaoPDI() {
    var gridAvaliacaoPDI = $('#gridAvaliacaoPDI').DataTable({
        language: {
            url: "//cdn.datatables.net/plug-ins/1.10.7/i18n/Portuguese-Brasil.json"
        },
        "sAjaxDataProp": "",
        destroy: true,
        ajax: {
            "url": 'Actions/GetAvaliacaoPDI.ashx',
            "type": "POST"
        },
        "searching": false,
        aoColumns: [
            { mDataProp: "DescFatorAvaliacao" }
        ]
    });
}

$(function () {
    loadAvaliacaoPDI();
});

JSON

[{
    "DesdobramentoList": [{
        "TipoAvaliador": 1,
        "DescFatorAvaliacao": "Usamos os recursos da empresa de forma consciente e responsável."
    },
    {
        "TipoAvaliador": 1,
        "DescFatorAvaliacao": "Assumimos nossos atos independentemente de sucesso ou fracasso, não damos desculpas."
    },
    {
        "TipoAvaliador": 1,
        "DescFatorAvaliacao": "Agimos como se fôssemos sócios da empresa"
    }]
}]

更新编辑@DSH提出的解决方案

        "dataSrc": function (json) {                
            for (var i = 0, ien = json.length ; i < ien ; i++) {
                for (var z = 0; z < json[i].DesdobramentoList.length; z++) {
                    var descricaoFator = json[i].DesdobramentoList[z].DescFatorAvaliacao;
                    json[i].DescFatorAvaliacao = descricaoFator;
                }                    
            }                
            return json;
        }

1 个答案:

答案 0 :(得分:2)

使用ajax.dataSrc选项告诉DataTables数据位于DesdobramentoList而不是data

var gridAvaliacaoPDI = $('#gridAvaliacaoPDI').DataTable({
    language: {
        url: "//cdn.datatables.net/plug-ins/1.10.7/i18n/Portuguese-Brasil.json"
    },
    destroy: true,
    ajax: {
        url: 'Actions/GetAvaliacaoPDI.ashx',
        type: "POST",
        dataSrc: "0.DescFatorAvaliacao"
    },
    searching: false,
    columns: [
        { data: "DescFatorAvaliacao" }
    ]
});

PS。我认为你的意思是返回一个对象,而不是一个包含JSON中单个对象的列表。