1

私は外部 Web サービスを持っているので、私のコントローラー アクションは Kendo グリッドを内部に含むビューを返すだけです。

サービスは次のような構造を返します。

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

私はFields値を表示することにのみ興味があります。問題は、Fields基本的List<string>にコレクションではないKeyValuePairため、グリッドにバインドするのに問題があります。

parse イベントを使用して何らかの方法でデータを変更しようとしましたが、成功しませんでした。

これまでのところ、私の見解にはそのようなコードがあります:

<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
});

つまりgrid、呼び出した列が1つfieldあり、解析関数で(すでに行っていたように)反復し、 : のキーと値のペアを構成しfieldますvalue

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

于 2013-03-20T17:46:57.647 に答える
0

schema の data プロパティが操作を行う関数を返すようにする必要があります。このフィドルを確認してください: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 に答える