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

标签 javascript jquery kendo-ui kendo-grid kendo-template

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

这是我的 DEMO .

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

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

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

在我下面的 JS 代码中,我可以使用下面的代码访问当前的详细信息网格包装器,但无法弄清楚如何访问父行模型详细信息

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

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

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

最佳答案

使用 $(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);

Updated demo

请注意,当您横穿最近的 TR 时,您得到的是详细信息行,而不是实际的数据行。因此,您需要获取数据行 - 即 .prev() 出现时 - 为 .dataItem() 获取正确的行。

关于javascript - Kendo 网格 - 如何在添加/编辑子行(详细信息网格)时访问父行模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45879186/

相关文章:

javascript - 从现有 JSON 数组的嵌套键/值创建一个新的 JSON 数组

javascript - nginx 重写删除/index.html 并保留查询字符串和哈希值

javascript - 在 react 路由器中传递可选参数

jquery :selected not working right?

telerik - KendoUI 集成到 Durandal JS

javascript - 可以通过 Javascript 控制 SWF 吗?

javascript - 使用单选按钮隐藏-取消隐藏

javascript - Javascript/JQuery 中的动态数组

json - 来自 JSON 的 WebAPI 模型绑定(bind)

javascript - Kendo MultiSelect 无法读取属性 'value'