编程语言
首页 > 编程语言> > javascript – 如何获取Kendo上下文菜单中的当前行?

javascript – 如何获取Kendo上下文菜单中的当前行?

作者:互联网

我有一个Kendo网格的Kendo上下文菜单.我想提取当前行的值.
这是我的看法:

@(Html.Kendo().Grid<Class>()
    .Name("reqRows")
    .Columns(columns =>
    {
        columns.Bound(x => x.0);
    })
)

@(Html.Kendo().ContextMenu()
    .Name("brc")
    .Target("#reqRows")
    .Items(items =>
    {
        items.Add()
            .Text("1").LinkHtmlAttributes(new { onClick = "confirm()" });
    })
)

<script>
    function confirm(e) {
        alert(e);
        var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
        alert(dataItem.0);
    }
</script>

我得到e的未定义值.如何提取当前行?我可以提取未绑定在列中的Model.Id吗?

解决方法:

您可以使用Select事件:

@(Html.Kendo().ContextMenu()
    .Name("brc")
    .Target("#reqRows")
    .Items(items =>
    {
      items.Add().Text("1");
    })
    .Events(e => e.Select("selectItem"))
)

然后获取所选项目,如下所示:

function selectItem(e) {
    var grid = $(e.target).data("kendoGrid");
    var item = grid.dataItem(grid.select());
    var data = item.SomeColumn;
}

如果使用鼠标右键打开上下文菜单,则默认情况下不会选择该行,并且项目将是未定义的.添加此javascript以确保选中该行(请注意,您的网格必须是.Selectable()):

$("#reqRows").on("mousedown", "tr[role='row']", function (e) {
    if (e.which === 3) {
        $("#reqRows tbody tr").removeClass("k-state-selected");
        $(this).addClass("k-state-selected");
    }
});

如果您需要ID,则需要将其绑定到网格.把它隐藏起来:

@(Html.Kendo().Grid<Class>()
    .Name("reqRows")
    .Columns(columns =>
    {
        columns.Bound(x => x.Id).Hidden();
        columns.Bound(x => x.SomeColumn);
    })
)

标签:javascript,net,kendo-ui,kendo-asp-net-mvc,c-2
来源: https://codeday.me/bug/20190829/1764138.html