I am looking to use the RadWindow as a progress / operation complete window for bulk operations on items in a RadGrid. I am running into challenges keeping the window up after the operation and communicating with it without the window closing after the operation is complete. Here's a small sample of the main page:
Here is what the progress dialog looks like:
Any thoughts on where to go from here? My first challenge is that GetRadWindowManager() is undefined when the operation tries to complete the callback.
<%@ Page Language="C#" AutoEventWireup="true" Async="true" %> |
<%@ Import Namespace="System.Runtime.Remoting.Messaging" %> |
<%@ Import Namespace="System.Threading" %> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head runat="server"> |
<telerik:RadStyleSheetManager ID="RadStyleSheetManager1" runat="server" /> |
</head> |
<body> |
<form id="form1" runat="server"> |
<telerik:RadScriptManager ID="ScriptManager" runat="server"> |
<Scripts> |
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> |
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> |
</Scripts> |
</telerik:RadScriptManager> |
<telerik:RadAjaxManager ID="AjaxManager" runat="server" /> |
<telerik:RadWindowManager ID="WindowManager" runat="server"> |
<Windows> |
<telerik:RadWindow ID="Progress" runat="server" Behaviors="Move, Resize" Modal="true" |
Title="Operation Progress" VisibleStatusbar="false" /> |
</Windows> |
</telerik:RadWindowManager> |
<telerik:RadCodeBlock ID="CodeBlock" runat="server"> |
<script type="text/javascript"> |
function UpdateProgress(success, value) |
{ |
GetRadWindowManager().getWindowByName('Progress'); oWnd.get_contentFrame().contentWindow.DisplayResults(success, value); |
} |
</script> |
</telerik:RadCodeBlock> |
<asp:UpdatePanel ID="Panel1" runat="server"> |
<ContentTemplate> |
<asp:Button ID="Submit" runat="server" Text="Do a Long-Running Operation" OnClick="Submit_Click" |
OnClientClick="window.radopen('Progress.aspx', 'Progress');" /> |
</ContentTemplate> |
<Triggers> |
<asp:AsyncPostBackTrigger ControlID="Submit" EventName="Click" /> |
</Triggers> |
</asp:UpdatePanel> |
</form> |
</body> |
</html> |
<script runat="server"> |
private void LongRunningMethod(string name) |
{ |
Thread.Sleep(5000); |
} |
private delegate void LongRun(string name); |
protected void Submit_Click(object sender, EventArgs e) |
{ |
PageAsyncTask task = new PageAsyncTask( |
delegate(Object source, EventArgs ea, AsyncCallback callback, Object state) |
{ |
return (new LongRun(LongRunningMethod)).BeginInvoke("Sleep", callback, state); |
}, |
delegate(IAsyncResult ar) |
{ |
((LongRun)((AsyncResult)ar).AsyncDelegate).EndInvoke(ar); |
Page.ClientScript.RegisterStartupScript(this.GetType(), |
"UpdateProgressDialog", |
@"UpdateProgress(true, 'test worked, click close to refresh the page');", true); |
}, null, null); |
Page.RegisterAsyncTask(task); |
} |
</script> |
Here is what the progress dialog looks like:
<%@ Page Language="C#" AutoEventWireup="true" %> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<body> |
<form id="form1" runat="server"> |
<telerik:RadScriptManager ID="ScriptManager" runat="server"> |
<Scripts> |
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> |
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> |
</Scripts> |
</telerik:RadScriptManager> |
<telerik:RadAjaxManager ID="AjaxManager" runat="server" /> |
<asp:Panel ID="ProcessingRequest" runat="server"> |
Processing Your Request |
<img alt="Please Wait..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading4.gif") %>' /> |
</asp:Panel> |
<asp:Panel ID="Success" runat="server" Visible="false"> |
Operation was a success! |
<ul> |
<li>Messages</li> |
</ul> |
<a href="#">Close</a> |
</asp:Panel> |
<script type="text/javascript"> |
function GetRadWindow() |
{ |
var oWindow = null; |
if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog |
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; //IE (and Moz as well) |
return oWindow; |
} |
function DisplayResults(success, value) |
{ |
// TODO: Hide please wait section |
if (success) |
{ |
// TODO: Show success section |
// TODO: Bind results list to bullet list |
} |
else |
{ |
// TODO: Show failure section |
// TODO: Bind results list to bullet list |
} |
alert('hello ' + value); |
} |
</script> |
</form> |
</body> |
</html> |
Any thoughts on where to go from here? My first challenge is that GetRadWindowManager() is undefined when the operation tries to complete the callback.