动态打开 Javascript 中定义的辐射窗口



Objective:- 从服务器端,我需要在 IF 条件下自动打开一个 radwindow(在 aspx 页面的 JavaScript 中定义)。

使用的代码:-

在aspx页面中,我将radwindow定义为:-

<telerik:RadWindowManager Skin="WBDA" ID="AssetPreviewManager" Modal="true" 
EnableEmbeddedSkins="false" runat="server"  DestroyOnClose="true" Behavior="Close" 
style="z-index:8000">
    <Windows>   
        <telerik:RadWindow ID="DisclaimerAlertWindow" runat="server" Width="720px"    Height="220px" 
Modal="true" visibleStatusbar="false" VisibleTitlebar="false" keepInScreenBounds="true" title="Sourav">                                            
      </telerik:RadWindow>  
   </Windows>  
</telerik:RadWindowManager>

在 JavaScript 中,定义了一个用于打开 radwindow 的函数:

function openRadWindow() 
     { 
        var oWnd = radopen('DisclaimerAlert.aspx, 'DisclaimerAlertWindow'); 
        oWnd.set_title('Access Denied !');  
        oWnd.Center(); 
        return false; 
     }
因此,在

aspx页面的服务器端,在页面加载事件中检查IF条件,然后我将"openRadWindow()"函数调用为:-

protected void Page_Load(object sender, EventArgs e)
{
if (fieldValue == "False") 
{ 
 string xyz = "<script type='text/javascript' lang='Javascript'>openRadWindow();</script>"; 
 ClientScript.RegisterStartupScript(this.GetType(), "Window", xyz); 
}
}

问题:-

但是在运行这个时,这些JavaScript错误即将到来:-

  1. 对象不支持此属性或方法。
  2. "未定义"为空或不是对象

请帮助如何实现我的目标。我完全被困住了。

嗨,

我想与您分享我的解决方案,以仅在Javascript代码中创建RadWindow对话框。

我们需要实现 2 个方法:一个用于初始化 RadWindow 对话框,最后一个用于接收关闭 RadWindow 后返回的参数。您可以在第二步中执行所需的操作(例如回发,...)

这是我的代码:

初始化辐射窗口对话框:

    function openMyDialog(url, args) {
    var manageWindow = GetRadWindowManager();
    if (manageWindow) {
        var radWindow = manageWindow.open(url, "<your_dialog_name>");
        if (radWindow) {
            radWindow.set_initialBehaviors(Telerik.Web.UI.WindowBehaviors.None);
            radWindow.set_behaviors(Telerik.Web.UI.WindowBehaviors.Move + Telerik.Web.UI.WindowBehaviors.Close + Telerik.Web.UI.WindowBehaviors.Resize);
            radWindow.setActive(true);
            radWindow.SetModal(true);
            radWindow.center();
            radWindow.set_visibleStatusbar(false);
            radWindow.set_keepInScreenBounds(true);
            radWindow.set_minWidth(640);
            radWindow.set_minHeight(480);
            radWindow.setSize(640, 480);
            radWindow.set_destroyOnClose(true);
            radWindow.add_close(closeMyDialog);//after closing the RadWindow, closeMyDialog will be called
            radWindow.argument = args;//you can pass the value from parent page to RadWindow dialog as this line
        }
    }
}

关闭"辐射窗口"对话框:

function closeMoveProjectDialog(sender, args) {
    var objArgs = args.get_argument();
    //objArgs variable stored the values returned from the RadWindow
    //you can use it for your purpose
}

怎么称呼这个?您可以将打开方法放入预期的方法中。在我这边,我有一个如下所示的方法,我将按这种方式调用 RadWindow:

function ShowForeignKeyFrontEditSingle(param1, param2){
    var url = "ForeignKeyFrontEditSingle.aspx";
    var objArgs = new Array();
    objArgs[0] = param1;
    objArgs[1] = param2;
    openMyDialog(url, objArgs);
    return;
}

当然,您必须声明一个 RadWindowManager 控件

function GetRadWindowManager() {
    return $find("<%=your_radwindow_manager_control.ClientID%>");
}

看看这里,它解释了如何使用 ScriptManager.RegisterStartupScript 方法: http://www.telerik.com/help/aspnet-ajax/window-troubleshooting-javascript-from-server-side.html。请注意脚本管理器的方法。另请查看 Sys.Application.Load 事件,以防止代码过早执行。

最新更新