I wrote 2 user control. first one is my main message box control that contain RadWindowManager and a hidden ButtonYes. In second one I will shown my message and my Yes button (MessageBoxContainer user control). In my strategy when you click on yes button on MessageBoxContainer control message box will be closed and return an argument to MessageBox control and it must execute OnClientClose function for clicking on hidden ButtonYes but OnClientClose never be executed!! Here is my code.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MessageBox.ascx.cs" Inherits="Diten.Web.AspNet.UI.UserControls.MessageBox" Debug="true" %>
<script type="text/javascript">
function openWin(url, windowID) {
var parentPage = GetRadWindow().BrowserWindow;
var parentRadWindowManager = parentPage.GetRadWindowManager();
var oWnd = parentRadWindowManager.open(url, windowID);
window.setTimeout(function () {
oWnd.setActive(true);
}, 0);
}
function OnClientClose(oWnd, args) {
alert('Parent: ' + arg.clikedButton);
var arg = args.get_argument();
if (arg) {
if (arg.clikedButton == 'Ok') {
document.getElementById('<%= this.ButtonOk.ClientID %>').click();
} else if (arg.clikedButton == 'Cancel') {
document.getElementById('<%= this.ButtonCancel.ClientID %>').click();
} else if (arg.clikedButton == 'Retry') {
document.getElementById('<%= this.ButtonRetry.ClientID %>').click();
} else if (arg.clikedButton == 'Abort') {
document.getElementById('<%= this.ButtonAbort.ClientID %>').click();
} else if (arg.clikedButton == 'Yes') {
document.getElementById('<%= this.ButtonYes.ClientID %>').click();
} else if (arg.clikedButton == 'No') {
document.getElementById('<%= this.ButtonNo.ClientID %>').click();
}
}
}
</script>
<telerik:RadWindowManager ID="RadWindowManager" runat="server" OnClientClose="OnClientClose" Behaviors="Close, Move" VisibleStatusbar="false" AutoSize="true" ShowContentDuringLoad="false" DestroyOnClose="true" >
</telerik:RadWindowManager>
<asp:Button ID="ButtonOk" runat="server" Text="Ok" onclick="ButtonOk_Click" style="display:none;" />
<asp:Button ID="ButtonCancel" runat="server" Text="Cancel" onclick="ButtonCancel_Click" style="display:none;" />
<asp:Button ID="ButtonRetry" runat="server" Text="Retry" onclick="ButtonRetry_Click" style="display:none;" />
<asp:Button ID="ButtonAbort" runat="server" Text="Abort" onclick="ButtonAbort_Click" style="display:none;" />
<asp:Button ID="ButtonYes" runat="server" Text="Yes" onclick="ButtonYes_Click" style="display:none;" />
<asp:Button ID="ButtonNo" runat="server" Text="No" onclick="ButtonNo_Click" style="display:none;" />
MessageBox show method
public void Show(string message, MessageBoxModes messageBoxMode, MessageBoxIcon messageBoxIcon, string eventHandlerID, bool isModal)
{
message = message.Replace("%n", "<br/>");
string _parameters = "ControlToLoad=Diten.Web.AspNet.UI.UserControls.MessageBoxContainer" + "&OpenerID=" + this.OpenerID + "&Message=" + message +
"&MessageBoxMode=" + ((int)messageBoxMode).ToString() + "&MessageBoxIcon=" + ((int)messageBoxIcon).ToString() +
"&MessageBoxEventHandlerID=" + eventHandlerID;
string _navigateUrl = "/MainFrame.aspx?EncParameters=" + this.Encrypt(_parameters) + "', '" + this.Translate("Message");
RadWindow _radWindow = new RadWindow();
_radWindow.ID = "RadWindow" + Guid.NewGuid().ToString().Replace("-", string.Empty);
_radWindow.Behaviors = WindowBehaviors.Close;
_radWindow.Modal = isModal;
_radWindow.NavigateUrl = _navigateUrl;
_radWindow.Animation = WindowAnimation.Fade;
_radWindow.OnClientClose = "OnClientClose";
this.RadWindowManager.Windows.Add(_radWindow);
string _javaScript = string.Empty;
if (!isModal)
_javaScript = "radopen('" + _navigateUrl + "', '" + _radWindow.ID + "');";
else
_javaScript = "openWin('" + _navigateUrl + "', '" + _radWindow.ID + "');";
RadScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), this.ClientID + "MessageBox", _javaScript, true);
}
MessageBoxContainer ASCX code
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MessageBoxContainer.ascx.cs" Inherits="Diten.Web.AspNet.UI.UserControls.MessageBoxContainer" Debug="true" %>
<%@ Register Src="~/UI/UserControls/Templates/GroupBox.ascx" TagPrefix="DitenAsp" TagName="GroupBox" %>
<script language="javascript">
function returnToParent(clikedButton) {
var oArg = new Object();
var oWnd = GetRadWindow();
oArg.clikedButton = clikedButton;
oWnd.close(oArg);
}
</script>
<table cellpadding="0" cellspacing="0" width="100%" style="vertical-align: top;">
<tr>
<td align="center" width="100%" style="vertical-align: top;">
<table cellpadding="0" cellspacing="0" width="100%" style="vertical-align: top;">
<tr>
<td style="vertical-align: top; padding-right: 5px;">
<asp:Image ID="ImageIcon" runat="server" Width="32px" Height="32px" />
</td>
<td style="vertical-align: middle; text-align: left;" wrap="nowrap" nowrap>
<DitenAsp:GroupBox ID="GroupBox" runat="server">
<ContentTemplate>
<asp:Label ID="LabelMessage" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</DitenAsp:GroupBox>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" width="100%" style="height: 33px;">
<asp:PlaceHolder ID="PlaceHolderButtons" runat="server"></asp:PlaceHolder>
</td>
</tr>
</table>
i'm adding ButtonYes and RadWindow dynamically into my controls. Now my question is how could I execute OnClientClose method by calling OnClientClose event of my RadWindowManager or my RadWindow?