3

目标:-从服务器端,我需要在 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. 'undefined' 为 null 或不是对象

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

4

2 回答 2

4

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

我们需要实现两种方法:一种用于初始化 RadWindow 对话框,最后一种用于接收关闭 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
        }
    }
}

关闭 RadWindow 对话框:

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
}

这个怎么称呼?您可以将 open 方法放入您期望的方法中。在我这边,我有一个如下所示的方法,我会这样调用 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%>");
}
于 2015-09-14T09:45:25.180 回答
2

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

于 2012-10-23T14:11:32.793 回答