网格按钮单击上的Kendo UI窗口不会第二次打开

我正在研究MVC Kendo Ui项目,我遇到了以下问题:

我有一个可编辑的kendo网格,带有一个自定义编辑按钮,可以在一个类似“编辑器模板”的剑道窗口上打开局部视图。 这似乎第一次工作正常但如果我关闭窗口并尝试编辑另一个项目甚至相同只是不起作用。 我认为当我关闭窗口时,这会消除DOM中的元素,但无法弄清楚如何修复它。 这是一些代码:

@(Html.Kendo().Grid(Model) .Name("gridUbicaciones") .Columns(col => { col.Bound(x => x.UbicacionId); col.Bound(x => x.Nombre); col.Bound(x => x.Latitud); col.Bound(x => x.Longitud); col.Bound(x => x.Altitud); col.Bound(x => x.Comentario); col.Command(cmd => { cmd.Custom("Editar").Click("editItem"); cmd.Destroy().Text("Borrar"); }).Width(210).HtmlAttributes(new {style = "text-align:center;"}); }) .ToolBar(toolbar => toolbar.Create().Text("Agregar") ) .Pageable() .Sortable() .Filterable() .DataSource(dsource => dsource .Ajax() .PageSize(8) .ServerOperation(false) .Model(model => { model.Id(x => x.UbicacionId); model.Field(x => x.UbicacionId).Editable(false); }) .Read(read => read.Action("Ubicaciones_Read", "Home").Type(HttpVerbs.Post)) .Destroy(destroy => destroy.Action("Ubicaciones_Destroy", "Home")) .Update(update => update.Action("Ubicaciones_Update", "Home")) .Create(create => create.Action("Ubicaciones_Create", "Home")) )) 

JAVASCRIPT:

 function editItem(e) { e.preventDefault(); var dataItem = this.dataItem($(e.currentTarget).closest("tr")); if ($("#kendoWindowPopUp") == undefined) $("divUbicaciones").append("
"); var windowObject = $("#kendoWindowPopUp").kendoWindow({ resizable: false, modal: true, refresh: function () { this.center();}, onClose: function () { windowObject.destroy(); alert('hi close');// THIS CODE DOES NOT RUN } }) .data("kendoWindow"); windowObject.refresh({ url: "/Home/EditorUbicacion?UbicacionId=" + dataItem.UbicacionId }); windowObject.open(); }

我得到以下js错误:

未捕获的TypeError:对象[object Object]没有方法’kendoWindow’

提前致谢!

答案在评论中。 在这里添加它为像我这样通过谷歌打这个:)。 当通过AJAX加载的页面包含对jQuery的脚本引用时,通常会导致此问题。 重新初始化jQuery时,将清除所有基于jQuery的数据属性,包括保存Kendo UI窗口小部件对象的数据(kendoWidget)属性。

  1. 请确保Window不在页面上加载重复的jQuery实例。
  2. 使用’iframe’

     $("#dialog").kendoWindow({ // load complete page... content: "/foo", // ... and show it in an iframe iframe: true }); 

    您可以在此处找到Telerik文档的更多信息

你的问题在于你的editItem(),onClose默认情况下不会从DOM中删除元素,你是故意这样做的。 要刷新窗口内容,请进行以下检查:

 function editItem(e) { e.preventDefault(); var dataItem = this.dataItem($(e.currentTarget).closest("tr")); // Window variable var wnd = $("#kendoWindowPopUp"); if (!wnd.data("kendoWindow")) { // initialized on first call and successive calls will reuse this object wnd.kendoWindow({ width: "600px", title: "title", actions: [ "refresh", "Minimize", "Maximize", "Close" ], resizable: false, modal: true, visible: false // Leave all events with their default behavior }); } var windowObject = wnd.data("kendoWindow"); windowObject.refresh({ url: "/Home/EditorUbicacion?UbicacionId=" + dataItem.UbicacionId }); windowObject.open().center(); }