2013-06-21 3 views
6

मैं नेस्टेड JSON के साथ केंडो यूआई ग्रिड को कैसे पॉप्युलेट कर सकता हूं।मैं केंडो यूआई ग्रिड को पॉप्युलेट करने के लिए नेस्टेड जेसन का उपयोग कैसे कर सकता हूं?

मेरा मतलब है मेरी JSON की तरह

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

है और मैं केंडो यूआई ग्रिड चाहते आईडी, नाम, OtherType और OtherStuff के रूप में कॉलम के साथ।

अग्रिम धन्यवाद।

उत्तर

9
जटिल JSON संरचनाओं के लिए

, तो आप उपयोग कर सकते हैं 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"); 

आप थोड़ा करने के लिए अपने JSON को बदलते हैं:

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

तो आप उपयोग कर सकते हैं:

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

धन्यवाद आप के लिए उत्तर। स्कीमा का उपयोग करके, मैं ग्रिड में कॉलम कैसे निर्दिष्ट करूं? मेरा मतलब है कि आप कृपया ग्रिड की कॉलम संरचना को परिभाषित कर सकते हैं। – Saurabh

+1

यह एक अलग सवाल प्रतीत होता है। क्या यह? दो अलग-अलग प्रश्न हैं: एक मॉडल की परिभाषा है; दूसरा कॉलम की परिभाषा है। कॉलम को परिभाषित करें जैसा कि आप पहले कर रहे थे। – OnaBai

0

मैं बस चाहता था ओनाबाई के आधार पर एक और जवाब जमा करने के लिए।

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> 

जे एस:

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"); 
संबंधित मुद्दे