1

我有一个定义如下的剑道窗口:

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

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

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

这一切都很好,窗口可以根据我的喜好关闭和重新打开。

但是,我需要从局部视图中访问窗口的调整大小事件以调整窗口内的网格的大小。为了实现这一点,我将以下内容添加到从 url 返回的局部视图中。

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

添加此事件映射会导致我无法多次打开窗口的问题。我想我需要在关闭之前以某种方式“取消注册”活动?

4

1 回答 1

2

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

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

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

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

然后,当用户在网格上选择一个命令时,我创建了整个窗口并将其附加到 div。这里的关键是 deactivate 事件中的 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();
 }

现在我可以在局部视图中进行事件绑定,它可以正常工作,并且可以根据需要多次重新打开窗口。:)

更新:在局部视图中添加事件绑定会阻止“模态”工作。正在努力解决这个问题...

于 2014-11-06T21:52:52.547 回答