KendoUI Hierarchy Grid显示错误的数据

时间:2013-09-19 11:40:35

标签: json kendo-ui kendo-grid

我有一个解决方案,类似于以下内容:

$("#grid").kendoGrid({
    editable:true,
    columns: [
      { field: "name" },
      { field: "address" }
    ],
    dataSource: [
          {
              name: "Beverages",
              address: "street 1",
              products: [
                { name: "Tea", price: 20 },
                { name: "Coffee", price: 23 }
              ]
          },
          {
              name: "Food",
              address: "street 2",
              products: [
                { name: "Ham", price: 32 },
                { name: "Bread", price:34 }
              ]
          }
    ],
    detailInit: function (e) {
        $("<div/>").appendTo(e.detailCell).kendoGrid({
            dataSource: e.data.products,
            editable:true,
        });
    }
});

我从sql server数据库带来的那些数据。 主数据加载正确,但不是详细信息。我就是你在上面看到的。我选择的第一条记录顺利(我先选择的任何记录,无论是网格中的第一条记录还是最后一条记录)。然后,任何其他变坏,或不扩展或显示此错误消息“未捕获TypeError:undefined没有属性”。我可以做一个新的数据库查询,我猜这一切都运行正常,但如果我在第一个请求中提供所有数据,效率会更高。

欢迎任何帮助。再见,Thx。

2 个答案:

答案 0 :(得分:0)

您粘贴的代码不是有效的JavaScript。您需要像这样修改它:

OLD

/* snip */
columns: [
  { field: "name" },
  { field: "address" }
],
[
      {
          name: "Beverages",
/* snip */

NEW

/* snip */
columns: [
  { field: "name" },
  { field: "address" }
],
dataSource: [
      {
          name: "Beverages",
/* snip */

这是一个现场演示:http://jsbin.com/oKiKupi/1/edit

答案 1 :(得分:0)

好的,我解决了这个问题...... 把我所有的场景都弄得很复杂,所以如果有人在他自己的场景中遇到类似的问题,也许这会有所帮助。

我所做的是从网格定义中提取数据源定义。

   var ds = [
          {
              name: "Beverages",
              address: "street 1",
              products: [
                { name: "Tea", price: 20 },
                { name: "Coffee", price: 23 }
              ]
          },
          {
              name: "Food",
              address: "street 2",
              products: [
                { name: "Ham", price: 32 },
                { name: "Bread", price:34 }
              ]
          }
    ]   

$("#grid").kendoGrid({
    editable:true,
    columns: [
      { field: "name" },
      { field: "address" }
    ],
    dataSource: ds,
    detailInit: function (e) {
        $("<div/>").appendTo(e.detailCell).kendoGrid({
            dataSource: e.data.products,
            editable:true,
        });
    }
});

我希望这可以帮到你。

再见。