2014-11-06 56 views
1

我已经被定义为一个剑道窗口如下:无法打开Telerik的剑道窗口两次

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.This每次的时间打开,让动态要显示的数据取决于用户在网格上点击的内容。

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(); 
    } 
    }); 

添加此事件映射会导致无法多次打开窗口的问题。 我想在结束之前我需要以某种方式“注销”事件?

回答

2

找到了解决方案:更清洁,没有VB剃刀需要:)

我改变了方法给每个我想显示一个时间创建一个新窗口。

我创建了一个div来保存窗口。

<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(); 
} 

现在我可以有该事件的局部视图的正常工作和窗口可以,因为我想重新打开多次内部结合。 :)

更新:添加部分视图内的事件绑定停止'莫代尔'工作。努力解决这个问题...