Kendo 网格 - 如何在添加/编辑子行(详细网格)时访问父行模型

Rah*_*pta 4 javascript jquery kendo-ui kendo-grid kendo-template

我使用 Kendo 分层网格在我的父(主)网格和产品中显示类别作为子行(详细信息网格)。

这是我的演示

我正在使用自定义模板添加/编辑我的产品。

在弹出的表单中,我想在产品表单字段上方的标签中显示父类别名称及其一些详细信息。

现在在每个产品添加或编辑中,我想在表单中显示父类别的详细信息,并且还想通过产品创建/更新请求动态提交父 CategoryId

在我下面的 JS 代码中,我可以使用下面的代码访问当前的细节网格包装器,但不知道如何访问parent row model细节

.....
.......

function detailInit(e) {
    $("<div/>").appendTo(e.detailCell).kendoGrid({

    ....
    ......
    //ON CLICK ADD/EDIT BUTTON FOR CHILD ROWS
    edit: function(e) {

        var detailGridWrapper = this.wrapper;

        //Want to get Parent Category model
        //Retrieve some attributes out of the Category model, so that I can display them in the popup Add / Edit Product form

........
.....
Run Code Online (Sandbox Code Playgroud)

Don*_*own 5

随着$(detailGridWrapper).closest("tr").prev()您可以获得父网格当前行,一个用户已经扩展。然后$("#grid").data("kendoGrid").dataItem()你可以得到父网格当前模型:

var detailGridWrapper = this.wrapper,
    mainGrid = $("#grid").data("kendoGrid"),
    $parentGridTr = $(detailGridWrapper).closest("tr").prev(),
    parentData = mainGrid.dataItem($parentGridTr);

    console.log(parentData);
Run Code Online (Sandbox Code Playgroud)

更新演示

请注意,当您横向穿过最近的TR 时,您实际上获得了详细信息行而不是实际数据行。因此,您需要获取数据行 - 即.prev()进入的时间 - 以获取.dataItem().