0

我的网格中有一个嵌套网格,它工作得很好,但是客户端不喜欢使用左侧的箭头并要求添加一个按钮以显示子网格。

Kendo 网站上的示例显示了如何自动打开第一行,我只是想要一种从自定义控件扩展网格的方法,就像左侧选择器一样。

我已经让自定义命令正常工作,并且它执行示例代码,但我只需要一些有关使其适用于当前行所需的 javascript 的帮助。

columns.Command(command => 
            { 
                command.Edit().Text("Edit").UpdateText("Save"); 
                command.Destroy().Text("Del");
                command.Custom("Manage Brands").Click("showBrandsForAgency");

以及打开第一行的标准示例的js:

function showBrandsForAgency(e) {
    this.expandRow(this.tbody.find("tr.k-master-row").first());
}

请通过给我扩展单击的行而不是第一行所需的 js 来帮助我?

* 编辑 * 修改了 Atanas Korchev 提供的解决方案,以使其仅在按钮而不是整行上工作。

我更喜欢使用函数 showBrandsForAgency 而不是自定义函数的解决方案,但这可以完成工作:

$(document).ready(function () {

    $("#grid").on("click", "a", function (e) {
        var grid = $("#grid").data("kendoGrid");
        var row = $(this).parent().parent();

        if (row.find(".k-icon").hasClass("k-minus")) {
            grid.collapseRow(row);
        } else {
            grid.expandRow(row);
        }
    });
});
4

2 回答 2

5

你可以尝试这样的事情:

$("#grid").on("click", "tr", function(e) {
  var grid = $("#grid").data("kendoGrid");

  if ($(this).find(".k-icon").hasClass("k-minus")) {
    grid.collapseRow(this);
  } else {
    grid.expandRow(this);
  }
});

当在函数上下文中使用 jQuery 时(可通过this关键字获得)是触发事件的 DOM 元素。在这种情况下this是单击的表行。

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

于 2013-04-04T17:03:38.917 回答
-1

相同的结果只是更简单、更快、更高效:

$("#grid").on("click", "tr", function () {
    $(this).find("td.k-hierarchy-cell .k-icon").click();
});
于 2015-05-25T12:12:13.563 回答