【问题标题】:Creating Radwindow in code behind and avoiding postback on radwindow close在代码后面创建 Radwindow 并避免在 radwindow 关闭时回发
【发布时间】:2020-03-14 17:18:57
【问题描述】:

我可以在服务器端创建一个 radwindow。这是单击按钮时正在执行的代码。关闭按钮也是在后面的代码中创建的。

protected void OpenRW_Click(object sender, System.EventArgs e)
      {
        RadWindow window = new RadWindow();
        window.Modal = true;
        window.EnableViewState = false;
        window.VisibleOnPageLoad = true;
        window.Width = 300;
        window.Height = 300;

        window.VisibleOnPageLoad = true;
        window.Visible = true;
        window.DestroyOnClose = true;
        window.Behaviors = Telerik.Web.UI.WindowBehaviors.Move;

        window.ID = "Popup";

        //create close button here

        Button closebt = new Button();
        closebt.Visible = true;
        closebt.Text = "Close";

        closebt.OnClientClick = "$find(\" <%= Popup.ClientID %> \").close(); return false;";



        closebt.Style.Add("position", "absolute");
        closebt.Style.Add("bottom", "5px");
        closebt.Style.Add("right", "10px");


        window.ContentContainer.Controls.Add(closebt);
        RadWindowManager1.Controls.Add(window);

    }

但由于某种原因,当它关闭时,它会触发不需要的回发。我已经尝试了很多事情,包括将 viewonpageload 属性设置为 false 并使用 scriptmanager 显示窗口,但这会产生相同的结果。任何关于如何摆脱这种不必要的回发的想法将不胜感激。提前致谢。

【问题讨论】:

    标签: asp.net telerik


    【解决方案1】:

    问题在于 DNN (dotnetnuke) 重新分配了客户端 ID。 clientid 的呈现方式不同,因此 js 无法识别在回发中被抢先加载的 clientid,这会在浏览器中引发异常,从而导致窗口关闭时出现额外的回发。我的解决方法是使用 jquery 通过使用窗口类作为标识符来隐藏窗口的 div,然后删除模态覆盖。

     closebt.OnClientClick += "$('.<yourwindowclass>').hide();$telerik.$(\".TelerikModalOverlay\").remove(); return false;";
    

    我还就这个问题与 Telerik 团队进行了交流。我应该补充他们的支持非常好。

    https://www.telerik.com/forums/creating-radwindow-on-server-side#FAxVzO4lYkC7jHDx21chOw

    【讨论】:

      猜你喜欢
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多