2016-01-20 107 views
0

我有一个经验性的kendo网格在我的主要网格中使用,我的问题是如何从detailInit获取选定行的ID,然后折叠detailInit并将选定数据放入父网格中?如何从detailInit获取选定行的ID,然后折叠detailInit并将选定数据放入父网格中?

我的格子看起来像这样

function TheCatalogGrid(catalogData) { 
    $("#CatalogGrid").kendoGrid({ 
     dataSource: { 
      data: catalogData 
     }, 

     columns: [ 
      { field: "globalGroupID", title: "Group ID", hidden: true }, 
      { field: "globalGroupLevel", title: "globalGroupLevel", hidden: true }, 
      { field: "globalGroupName", title: "Group Name", width:350 }, 
      { field: "isRequired", title: "*", width:20 }, 
      { field: "optionName", title: "Option Name" }, 
      { title: "Description" }, 
      { title: "Price" } 
     ], 

     change: function (e) { 
      onSelectedRowClick(); 
     }, 
     scrollable: true, 
     pageable: false, 
     selectable: "row", 
     height: 500, 
     dataBound: function (e) { 
      var data = this.dataSource.data(); 
      $.each(data, function (i, row) { 
       if (row.get("globalGroupLevel") == 0) { 
        var element = $('tr[data-uid="' + row.uid + '"] '); 
        element.addClass("colored-row"); 
       } 
      }); 
     }, 
     detailInit: detailInit 
    }); 
} 

和我detailInit看起来像选择数据到父此

function detailInit(e) { 
    $("<div/>").appendTo(e.detailCell).kendoGrid({ 
     dataSource: { 
      type: "odata", 
      transport: { 
       read: "//demos.telerik.com/kendo-ui/service/Northwind.svc/Orders" 
      }, 
     }, 
     scrollable: false, 
     selectable: "row", 
     columns: [ 
      //{ field: "OrderID", width: "110px" }, 
      { field: "ShipCountry", title: "Option Name" }, 
      { field: "ShipAddress", title: "Description" }, 
      { field: "ShipName", title: "Price" } 
     ] 
    }); 
} 

广场选择了网格行,其中网格列

ScreenShot

我知道,列heade rs没有意义,但在我投入生产之前进行测试。

+0

我认为你的问题可能被分裂成3个问题 –

+0

@The_Black_Smurf,是啊,我想你是对的。我对此很懒惰 – Chris

回答

0

您可以使用detailExpand事件来获取主控行和标识值。

var globalGroupId = null; 

detailExpand: function(e) { 
    console.log(e.masterRow, e.detailRow); 
    var globalGroupId = e.masterRow.get("globalGroupID"); 
} 

然后添加方法改变为您详细的网格,有这样的伎俩

change: function(e) { 

    // get detail row 
    var detailRow = this.dataItem(this.select()); 
    var shipCountry = detailRow.get("ShipCountry") 

    // get master row 
    var masterGrid = $("#grid").getKendoGrid(); 
    var masterRow = masterGrid.dataSource.get(employeeId); 

    // set 'ship country' value to master row 'Country' field 
    masterRow.set("Country", shipCountry); 

}, 

看这个Dojo

+0

非常感谢,完美的作品。 – Chris

相关问题