Kendo ui 将剑道网格的值传递到弹出窗口

Kendo ui 将剑道网格的值传递到弹出窗口,kendo-ui,asp.net-mvc-5,kendo-grid,Kendo Ui,Asp.net Mvc 5,Kendo Grid,我在MVC5页面中实现了剑道网格和上下文菜单。单击“更新状态”菜单打开一个窗口。我需要从弹出窗口中选定的行中检索requestid和几个其他字段。我还需要显示一个带有值的下拉控件。最好的方法是什么 网格 Javascript function onSelect(e) { var grid = $("#GridTeam").data("kendoGrid"); var requestId; switch ($(e.item).children("

我在MVC5页面中实现了剑道网格和上下文菜单。单击“更新状态”菜单打开一个窗口。我需要从弹出窗口中选定的行中检索requestid和几个其他字段。我还需要显示一个带有值的下拉控件。最好的方法是什么

网格

Javascript

 function onSelect(e) {
        var grid = $("#GridTeam").data("kendoGrid");
        var requestId;

        switch ($(e.item).children(".k-link").text()) {

            case "Edit":

                var grid = $("#GridRequest").data("kendoGrid");
                var column = grid.columns[0];
                var selectedBackup = grid.dataItem(grid.select());
                requestId = selectedBackup.id;
                window.location.href = '@Url.Action("EditRequest", "Request", new { id = "_id_", status="Edit" })'.replace('_id_', requestId);
                break;
            case "Update Status":
                //alert("Work in progress");
                //$('#window1').data('kendoWindow').center().open();

                var myWindow = $("#window");

                //e.preventDefault();
                //var dataItem = this.dataItem($(e.currentTarget).closest("tr"));

                //kendo.bind($("#window"), dataItem);



                   myWindow.kendoWindow({
                    width: "400px",
                    height: "180px",
                    title: "Update Request Status",
                    modal: true,
                    visible: false,
                    actions: ["Minimize", "Maximize", "Close"],

                }).data("kendoWindow");
                   myWindow.data("kendoWindow").center().open();
        }
你做得几乎正确,只有两个细节:

  • 如果将contextMenu的目标绑定到网格的容器,则永远无法确定用户单击了哪一行。我建议您改为绑定到网格的行(TR),例如
    #GridRequest tbody TR

  • 很抱歉,
    e.currentTarget
    在该上下文中不存在或返回
    undefined
    。您应该使用
    e.target
    ,如果按照我上面的建议操作,它将指向单击的行。然后,您可以按如下方式获取数据项:

    grid.dataItem(e.target);
    
  • 请查看我的建议是否有效。

    您做得几乎正确,只需两个细节:

  • 如果将contextMenu的目标绑定到网格的容器,则永远无法确定用户单击了哪一行。我建议您改为绑定到网格的行(TR),例如
    #GridRequest tbody TR

  • 很抱歉,
    e.currentTarget
    在该上下文中不存在或返回
    undefined
    。您应该使用
    e.target
    ,如果按照我上面的建议操作,它将指向单击的行。然后,您可以按如下方式获取数据项:

    grid.dataItem(e.target);
    

  • 检查我的建议是否有效。

    如果我添加.Target(#GridRequest tbody tr),我的上下文菜单将停止working@Tom好吧,那太好了。我认为它会像javascript api一样工作。相当地strange@Tom但是,如果您将选择一个网格行作为使用菜单操作的要求,您可以使用我在演示中所做的另一个建议,即获取网格的选定行而不是菜单的目标元素。我尝试了您的示例,但您也使用了#grid tbody tr。那么,如果我添加.target,这对我有何作用(“#GridRequest tbody tr”),我的上下文菜单停止working@Tom,好吧,那太好了。我以为它会像javascript api一样工作。是的,非常好strange@Tom但是,如果您需要选择一个网格行作为使用菜单操作的要求,您可以使用我在演示中所做的另一个建议,即获取网格的选定行而不是菜单的目标元素足够了,但您也使用了#grid tbody tr。那么这对我来说如何
    grid.dataItem(e.target);