【问题标题】:Can't open Telerik Kendo window twice无法打开 Telerik Kendo 窗口两次
【发布时间】:2014-11-06 06:18:00
【问题描述】:

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

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

这一切都很好,窗口可以随时关闭和重新打开。

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

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

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

【问题讨论】:

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


    【解决方案1】:

    找到了解决方案:更干净,不需要 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();
     }
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-07
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      相关资源
      最近更新 更多