无法打开Telerik Kendo窗口两次

时间:2014-11-06 06:18:00

标签: asp.net-mvc vb.net telerik kendo-window

我有一个Kendo窗口,其定义如下:

 With Html.Kendo().Window().Name("tranferwindow")
    .Title("Select Transfer Destination")
    .Content("")
    .Resizable()
    .Modal(True)
    .Events(Function(events) events.Open("WindowToCenter"))
    .Events(Function(events) events.Refresh("transferopen"))
    .Draggable()
    .Width(400)
    .Visible(False)
    .Render()
    End With

每次使用刷新并传递新URL时,窗口都会打开。这是为了允许根据用户点击网格的内容显示动态数据。

 function transferitem(e) {
    var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
    wwindow.data("kendoWindow").open(); //Display waiting window while refresh happens
    var twindow = $("#tranferwindow")
    twindow.data("kendoWindow").refresh('/Home/TransferList?agentid=' + agentid + '&tenantid='    + tenantid + '&SessionID=' + dataItem.MediaID);
    }

在刷新事件结束时打开窗口,以确保用户看不到以前的内容。

 function transferopen() {
 wwindow.data("kendoWindow").close();  //Close the 'wait' window
 var twindow = $("#tranferwindow")
 twindow.data("kendoWindow").center().open();
 }

这一切都运作良好,窗口可以随意关闭和重新打开。

但是,我需要从Partial View中访问窗口的resize事件,以调整窗口内的Grid的大小。为此,我将以下内容添加到从url返回的局部视图中。

 $("#tranferwindow").kendoWindow({
 resize: function (e) {
  // resizeGrid();
   }
     });

添加此事件映射会导致无法多次打开Window的问题。 我假设我需要在结束之前以某种方式“取消注册”该事件?

1 个答案:

答案 0 :(得分:2)

找到了解决方案:更清洁,无需VB Razor:)

每次我想显示一个窗口时,我都改变了创建新窗口的方法。

我创建了一个div来保存Window。

<div id="windowcontainer"></div>

然后当用户在网格上选择一个命令时,我创建整个窗口,将其附加到div。这里的关键是去激活事件中的this.destroy。

         function transferitem(e) {
         var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
         $("#windowcontainer").append("<div id='tranferwindow'></div>");

         var mywindow = $("#tranferwindow")
         .kendoWindow({
             width: "400px",
             title: "Select Transfer Destination",
             visible: false,
             content: '/Home/TransferList?agentid=' + agentid + '&tenantid=' + tenantid + '&SessionID=' + dataItem.MediaID,
             deactivate: function () {
                 this.destroy();
             },
             open: WindowToCenter,
             refresh:transferopen
         }).data("kendoWindow");
         mywindow.refresh();
         }

然后在刷新功能

     function transferopen() {
     var twindow = $("#tranferwindow")
     twindow.data("kendoWindow").center().open();
 }

现在我可以将部分视图中的事件绑定工作正常,并且可以根据需要重新打开窗口。 :)

更新:在部分视图中添加事件绑定会停止&#39;模态&#39;从工作。努力解决这个问题......