在代码隐藏中创建 Radwindow 并避免在 radwindow 关闭时回发
Creating Radwindow in code behind and avoiding postback on radwindow close
我可以在服务器端创建一个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 显示 window,但这会产生相同的结果。任何关于如何摆脱这种不必要的回发的想法都将不胜感激。提前致谢。
问题在于 DNN (dotnetnuke) 重新分配了 clientid。 clientid 的呈现方式不同,因此 js 无法识别在回发中抢先加载的 clientid,这会在浏览器中引发异常,从而导致 window 关闭时出现额外的回发。我的解决方法是使用 jquery 通过使用 window class 作为标识符来隐藏 window 的 div,然后删除模态覆盖。
closebt.OnClientClick += "$('.<yourwindowclass>').hide();$telerik.$(\".TelerikModalOverlay\").remove(); return false;";
我还就此问题与 telerik 团队进行了交流。我应该加上他们的支持非常好。
https://www.telerik.com/forums/creating-radwindow-on-server-side#FAxVzO4lYkC7jHDx21chOw
我可以在服务器端创建一个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 显示 window,但这会产生相同的结果。任何关于如何摆脱这种不必要的回发的想法都将不胜感激。提前致谢。
问题在于 DNN (dotnetnuke) 重新分配了 clientid。 clientid 的呈现方式不同,因此 js 无法识别在回发中抢先加载的 clientid,这会在浏览器中引发异常,从而导致 window 关闭时出现额外的回发。我的解决方法是使用 jquery 通过使用 window class 作为标识符来隐藏 window 的 div,然后删除模态覆盖。
closebt.OnClientClick += "$('.<yourwindowclass>').hide();$telerik.$(\".TelerikModalOverlay\").remove(); return false;";
我还就此问题与 telerik 团队进行了交流。我应该加上他们的支持非常好。
https://www.telerik.com/forums/creating-radwindow-on-server-side#FAxVzO4lYkC7jHDx21chOw