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错误即将到来:-
- 对象不支持此属性或方法。
- "未定义"为空或不是对象
请帮助如何实现我的目标。我完全被困住了。
我想与您分享我的解决方案,以仅在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 事件,以防止代码过早执行。