2013-06-21 18 views
6

Làm cách nào tôi có thể điền vào lưới giao diện người dùng Kendo với JSON lồng nhau.Làm cách nào để sử dụng Json lồng nhau để điền vào lưới giao diện người dùng Kendo?

Ý tôi là JSON của tôi là như

var myJson: 
    [{"oneType":[ 
     {"id":1,"name":"John Doe"}, 
     {"id":2,"name":"Don Joeh"} 
    ]}, 
    {"othertype":"working"}, 
    {"otherstuff":"xyz"}] 
}]; 

và tôi muốn Kendo UI Lưới với các cột như Id, Name, OtherType và OtherStuff.

Cảm ơn trước.!

Trả lời

9

Đối với cấu trúc JSON phức tạp, bạn có thể sử dụng schema.parse

var grid = $("#grid").kendoGrid({ 
    dataSource : { 
     data : [ 
      { 
       "oneType": [ 
        {"id": 1, "name": "John Doe"}, 
        {"id": 2, "name": "Don Joeh"} 
       ] 
      }, 
      {"othertype": "working"}, 
      {"otherstuff": "xyz"} 
     ], 
     pageSize: 10, 
     schema : { 
      parse : function(d) { 
       for (var i = 0; i < d.length; i++) { 
        if (d[i].oneType) { 
         return d[i].oneType; 
        } 
       } 
       return []; 
      } 
     } 
    } 
}).data("kendoGrid"); 

Nếu bạn hơi thay đổi JSON của bạn để:

{ 
    "oneType" : [ 
     {"id": 1, "name": "John Doe"}, 
     {"id": 2, "name": "Don Joeh"} 
    ], 
    "othertype" : "working", 
    "otherstuff": "xyz" 
} 

sau đó bạn có thể sử dụng:

var grid = $("#grid").kendoGrid({ 
    dataSource: { 
     data : { 
      "oneType" : [ 
       {"id": 1, "name": "John Doe"}, 
       {"id": 2, "name": "Don Joeh"} 
      ], 
      "othertype" : "working", 
      "otherstuff": "xyz" 
     }, 
     pageSize: 10, 
     schema : { 
      data: "oneType" 
     } 
    } 
}).data("kendoGrid"); 
+0

Cảm ơn bạn trả lời. Bằng cách sử dụng lược đồ, làm cách nào để chỉ định các cột vào lưới? Tôi có nghĩa là bạn có thể vui lòng xác định cấu trúc cột của lưới điện. – Saurabh

+1

Điều này có vẻ là một câu hỏi khác. Là nó? Có hai câu hỏi khác nhau: một là định nghĩa của mô hình; khác là định nghĩa của các cột. Xác định các cột như bạn đã làm trước đây. – OnaBai

0

Tôi chỉ muốn để gửi một câu trả lời khác dựa trên OnaBai's.

http://jsfiddle.net/L6LwW/17/

HTML:

<script id="message-template" type="text/x-kendo-template"> 
    #for (var i = 0; i 
    < ddl.length; i++) {# <li><span>#=ddl[i].value#</li> 
    #}# 
    </script> 

<div id="grid"></div> 

Các JS:

var grid = $("#grid").kendoGrid({ 
    dataSource: { 
    data: [ 
     [{ 
     "id": 1, 
     "name": "John Doe", 
     "ddl": [{ 
      "key": 1, 
      "value": "hello" 
     }, { 
      "key": 1, 
      "value": "hello" 
     }] 
     }, { 
     "id": 2, 
     "name": "Don Joeh", 
     "ddl": [{ 
      "key": 1, 
      "value": "hello" 
     }, { 
      "key": 1, 
      "value": "hello" 
     }] 
     }] 
    ], 
    pageSize: 10, 
    schema: { 
     parse: function(d) { 
     for (var i = 0; i < d.length; i++) { 
      if (d[i]) { 
      return d[i]; 
      } 
     } 
     return []; 
     } 
    } 
    }, 
    columns: [{ 
     field: "id", 
     title: "ID" 
    }, { 
     field: "name", 
     title: "Name" 
    }, { 
     field: "ddl", 
     title: "DDL", 
     width: "180px", 
     template: kendo.template($("#message-template").html()) 
    } //template: "#=ddl.value#" } 
    ] 
}).data("kendoGrid");