0

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

$("#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 数据库中带来的那些数据。主数据正确加载,但不是详细信息。我做的就是你在上面看到的。我选择的第一条记录运行良好(我首先选择的任何记录,不管它是网格中的第一条还是最后一条记录)。然后,任何其他变坏,或者不展开或显示此错误消息“Uncaught TypeError: undefined has no properties”。我可以做一个新的数据库查询,我想一切都很好,但如果我在第一个请求中带来所有数据,效率会更高。

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

4

2 回答 2

0

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

老的

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

新的

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

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

于 2013-09-19T14:04:48.393 回答
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,
        });
    }
});

我希望这可以帮助你。

再见。

于 2013-09-26T14:00:29.200 回答