如何从UserControl的代码隐藏中显示Telerik RadWindow

时间:2016-08-09 07:32:11

标签: c# asp.net telerik

以下是我用来在aspx页面中显示Telerik(Radwindow)弹出窗口的代码。它成功显示具有以下当前代码的窗口。

如何从ASP.NET Usercontrol显示弹出窗口?

RadWindowManager windowManager = new RadWindowManager();
RadWindow window1 = new RadWindow();

window1.NavigateUrl = "Window1.aspx";
window1.ID = "RadWindow1";
window1.VisibleOnPageLoad = true; // Set this property to True for showing window from code   
windowManager.Windows.Add(window1);
this.form1.Controls.Add(window1);

1 个答案:

答案 0 :(得分:2)

当然,您可以使用此方法存在两个问题:

  • 用户控件必须知道母版页上的窗口管理器和窗口,遍历控件层次结构并找到它们

  • 如果您将整个代码段添加到用户控件中,您最终会得到几个窗口管理器实例,这会对您产生一些技巧(请参阅here)。

所以,请考虑以下想法:

  • 将RadWindow实例添加到用户控件(而不是RadWindowManager)并单独使用它。阅读this article以从服务器注册脚本以打开它,并this article创建可能需要每个用户控件唯一的JS功能。

  • 完全从客户端打开RadWindow,如图here所示。你可以register a JS function from the server传递你需要的参数(URL,模态,等等)

以下是基于您的评论的其中一个想法(我将使用)的示例实现:

母版页

        <telerik:RadWindowManager ID="RadWindowManager1" runat="server"></telerik:RadWindowManager>
        <script>
            function openDialog(url, modal, width, height) {
                if (radopen) { //if not, there is no RadWindowManager on the page, add an else{} block to use window.open() or other logic
                    var wnd = radopen(url, null);
                    wnd.set_destroyOnClose(true);
                    //add checks here in case parameters have not been passed
                    wnd.setSize(width, height);
                    wnd.center();
                    wnd.set_modal(modal);
                }
            }
        </script>

用户控制标记

<asp:Button ID="Button1" Text="open RW" OnClick="Button1_Click" runat="server" />

使用控制代码隐藏

protected void Button1_Click(object sender, EventArgs e)
{
    bool flag = true;
    if(flag)
    {
        string script = string.Format("function f(){{openDialog('{0}', {1}, {2}, {3});Sys.Application.remove_load(f);}}Sys.Application.add_load(f);",
                                     "the-page.aspx",
                                     "true",
                                     600,
                                     400);
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "someKey", script, true);
    }
}
相关问题