2014-11-06 61 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(); 
} 

現在我可以有該事件的局部視圖的正常工作和窗口可以,因爲我想重新打開多次內部結合。 :)

更新:添加部分視圖內的事件綁定停止'莫代爾'工作。努力解決這個問題...