Showing posts with label window. Show all posts
Showing posts with label window. Show all posts

Saturday, March 24, 2012

Trigger partial page update from child window... or from DIVed IFrame

Hello there.

I need ideas on how to trigger an update panel from a child window (window.open) with ASP.NET AJAX. How can I access the "parents" page Scriptmanager or even the UpdatePanel itself?

The other possible option would be to do a callback from an IFrame but I am also unsure if it is possible to tweak it in such a way that only certain parts of the page are reloaded.

If you have already accomplished this in some way or the other than I would greatly appreciate if you share your solution or give some hints.


thanks,

Elmar

Gosh, isn′t it always like this - after posting the above I found a very decent solution for this issue. It does not involve hidden controls or similar.

In case you want to know more - here is thelink

Elmar

Wednesday, March 21, 2012

Trying to open a new browser window from within an UpdatePanel and getting Sys.WebForms.Pa

I'm in the process of developing a module for a DotNetNuke portal site. The module hosts an ASP2.0 Wizard control which guides the user through report & parameter selection & then when the Finish button is clicked the module opens a new browser window at a url which hosts the ASP2.0 ReportViewer control.

This all worked OK until I enable AJAX on the site. I've wrapped the Wizard control in an UpdatePanel and although the functionality of the wizard is fine when the Finish button is clicked I get the error"Sys.WebForms.PageRequestManagerParserErrorException: The message from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled."


The wizard_FinishButtonClick handler is doing some housekeeping then calling Response.Write() with a JavaScript string to open the new browser window so I'm guilty as charged. I've tried using DNN's Intermodule Communications to get another module to kick off the browser open but I still end up with the same exception. What would be the best way of getting around this issue ?


ThanksScott

The Wizard control is not supported by Ajax... along with a few other controls... You can work around it by wrapping your Wizard into a Iframe but not within a update panel...


To nitpick, the Wizard controlis supported within an UpdatePanelas long asits contents are converted to an editable template.

Seehttp://ajax.asp.net/docs/overview/UpdatePanelOverview.aspx#UpdatePanelCompatibleControls.


Thanks for your responses guys but I don't think the interaction of the Wizard and UpdatePanel is the issue.

The reason the wizard was wrapped by an UpdatePanel was that

1) the wizard is wrapped by a Drag panel and a collapsible panel. The functionality of the Drag & Collapse panels works fine but any activity within the wizard generates a postback that resulted in the whole thing being relocated back to it's initial start point.

2) I then added the UpdatePanel and I can now move the panel around the page and do stuff within the wizard without it relocating to start point.

3) It was at this point that I started to get the error which is caused by the Response.Write when the wizard Finish button is clicked. There is another method called when the Finish button is clicked and this functionality still works it's just the Response.Write I need to avoid.

I'll be more specific this time - is there a way to open a new browser within an update panel ?

Regards
Scott


Well it seems it is possible to do this. All I had to do was use the script manager to register a client script block from the Finish button click event handler.

the code for this would be for example

protected void wizReport_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
try
{
string reportViewerUrl = System.Configuration.ConfigurationManager.AppSettings["ReportViewerUrl"].ToString();
System.Type cstype = typeof(class name);
string csname = "PopUpReport";
string script = @."window.open('" + reportViewerUrl + "','_blank','location=no,scrollbars=yes,resizable=yes,top=0,left=0,height=800,width=950');";
ScriptManager.RegisterClientScriptBlock(wizReport, cstype, csname, script, true);
}
catch (Exception x)
{
string s = x.Message;
}
}