如何使用嵌套 Json 填充 Kendo UI 网格?

Posted

技术标签:

【中文标题】如何使用嵌套 Json 填充 Kendo UI 网格?【英文标题】:How can I use nested Json to populate Kendo UI grid? 【发布时间】:2013-06-18 08:14:48 【问题描述】:

如何使用嵌套 JSON 填充 Kendo UI 网格。

我的意思是我的 JSON 是这样的

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

我想要 Kendo UI Grid,其列为 Id、Name、OtherType 和 OtherStuff。

提前致谢!

【问题讨论】:

你最好看看here 【参考方案1】:

对于复杂的 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");

【讨论】:

感谢您的回复。通过使用模式,我如何指定网格的列?我的意思是你能定义网格的列结构吗? 这似乎是一个不同的问题。是吗?有两个不同的问题:一个是模型的定义;另一个是列的定义。像以前一样定义列。【参考方案2】:

我只是想根据 OnaBai 提交另一个答案。

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>

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

【讨论】:

以上是关于如何使用嵌套 Json 填充 Kendo UI 网格?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ASP.NET MVC 在 Kendo UI Grid 中实现 N 级嵌套层次结构

如何使用服务器的 JSON 响应对象(而不是完整对象)中的属性来填充 Kendo 网格?

Kendo 数据网格 - 如何从嵌套的 JSON 对象设置列值?

如何从 JSON 字符串生成 Kendo UI 图表

Kendo UI Grid 自定义过滤器菜单在第一次过滤或清除后中断

Kendo Grid 具有正确的 JSON,但数据未显示