使用JSON对象填充KendoGrid

时间:2013-03-07 04:35:45

标签: javascript json knockout.js kendo-ui

作为Kendo UI和Knockout的新手(3天!),我正在尝试将旧版Java小程序转换为Javascript。到目前为止,创建和绑定kendoGrid相对容易:

function JobViewModel(){     var self = this;

self.jobData = new ko.observableArray([]);

self.grdJobs = {
    scrollable: true,
    sortable: true,
    filterable: false,
    columnMenu: true,
    resizable: true,
    columns: [
        { title: "Job ID", field: "jobID" },
        { title: "Owner", field: "owner" },
        { title: "Description", field: "description" },
        { title: "State", field: "runState" },
        { title: "Start Time", field: "timeStart" },
        { title: "End Time", field: "timeEnd" },
        { title: "Elapsed Time", field: "timeElapsed" },
        { title: "Progress", field: "progress" },
        { title: "Agent", field: "agent" },
        { title: "Last Action", field: "lastAction" }
    ],
    selectable: "single"
};

};

从服务器返回的数据是一组JSON对象(任意长度),如下所示(为简洁起见缩短):

[{0:1,2:3,4:5,...},{0:1,2:21,4:5,...},{0:1,2:23,4 :5,...}]

这个数字键/值对的数组映射到一个字典对象,其中数字键与字符串值配对,如:

{ 0:“状态” 1:“完成” 2:“工作ID” 3:“54759” 4:“所有者” 5:“约翰” ... 21:“54758” ... 23:“54757” ... }

我需要得到的是字典中与JSON对象数组相关的映射字符串。我尝试的方法是JSON.stringify(obj [i]),但后来我不确定我能用它做什么(也许在可以分配给kendoGrid的ko.observable中使用它?)无论如何,我是什么基于我上面显示的示例数据后,我是一个网格,其中列标题为“JOB ID”,“所有者”,“状态”和3行作业(54757,54758,54759),全部归John和State所有。结束。

我希望这一切都有道理。我想我真正需要的是如何获取JSON并将其转换为可以填充到Kendo Grid中的可用内容。感谢您帮助JS / JSON / Kendo / Knockout新手!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用可以使用的元素将这两个数组映射到另一个数组。

我做了一个简单的jsFiddle来证明这一点:jsFiddle

代码很简单:

var data = [{ 0: 1, 2: 3 }, { 0: 4, 2: 3 }];
var mapping = { 0: 'State', 1: 'Finished', 2: 'Owner', 3: 'John', 4: 'Pending' };

var realData = [];
$.each(data, function(index, obj) {
    var arrayElem = {};
    $.each(obj, function(key, value) {
        arrayElem[mapping[key]] = mapping[value];
    });
    realData.push(arrayElem);
});