1

我有外部 Web 服务,所以我的控制器操作只返回带有 Kendo 网格的视图。

该服务返回给我这样的结构:

{"Form":"xxx","Fields":["xxx","xxx","xxx"]}

我只对显示Fields值感兴趣。问题是它Fields基本上List<string>不是一个KeyValuePair集合,所以我把它绑定到网格上有些麻烦。

我尝试使用解析事件并以某种方式更改数据,但没有成功。

到目前为止,我认为我有这样的代码:

<div id="alias-list-view" class="k-content">
    <div id="alias-list-grid" style="width: 400px"></div>
</div>

var aliasListDataSource = new kendo.data.DataSource({
   transport: {
       read: {
           url: "some_url",
           dataType: "json"
       }
   },
    schema: {
        data: "Fields",
        parse: function (data) {
            $.each(data, function (index, item) {
                // not sure what to do
            });
        }
    },
   pageSize: 10
});


$("#alias-list-grid").kendoGrid({
    autoBind: false,
    dataSource: aliasListDataSource,
    pageable: true
});
4

2 回答 2

2

您可以将parse函数定义如下:

parse: function (data) {
    var fields = data.Fields;
    var result = [];
    $.each(fields, function (index, item) {
        result.push({field: item })
    });
    return result;
}

然后是Grid

$("#alias-list-grid").kendoGrid({
    dataSource: aliasListDataSource,
    pageable  : true
});

即 Thegrid有一个我们调用的列,并且在 parse 函数中我们迭代(正如你已经在做的那样)并组成:field的键值对。fieldvalue

示例:http: //jsfiddle.net/OnaBai/BEM3S/

于 2013-03-20T17:46:57.647 回答
0

您需要使模式的数据属性返回一个执行操作的函数。检查这个小提琴:http: //jsfiddle.net/whizkid747/9NsLR/3/

var dataFromService = {"Form":"xxx","Fields":["xxx1","xxx2","xxx3"]}
var aliasListDataSource = new kendo.data.DataSource({ 
    //data:movies,

schema:{
     data: function(response){
        var dataForDS = [];


         var len = dataFromService.Fields.length;

       for (var i = 0; i < len; i++) {                     
           var obj  = {
               title : dataFromService.Fields[i]
           };            
          dataForDS.push(obj);     
       }             
     return dataForDS;   
}    
}
});
于 2013-03-20T17:04:15.853 回答