views:

34

answers:

2

Requirements: We have a form for users to submit. On submission, form data is used for calculations and generation of reports. On postback, a confirmation message and further options are displayed. We want to display report in a new window/tab.

Conditions: We do not want to use JavaScript on postback to open a new window onload as this will stop users who have javascript disabled.

Possible solutions: 1. Open a new window on button click with a unique id (let the postback happen for code execution). The new window should request report but code waits until report is generated. On report page, show a wait message which timeouts and allows user to refresh or use page refresh in meta. 2. Use javascript but detect if js is enabled on postback (by setting a variable value using js on form load), if js is disabled show a link to the user for report else open a window using js on page load after postback.

Question: Is there any better way to do this? Any tips to improve above solutions? Which one will you prefer and why?

Thanks.

+2  A: 

Make a link with target=_blank which redirects to a page that generates the report and then show it.

IMO users that want to access your site WILL have javascript enabled. The web without javascript is not a web, maybe it was a few years ago, but now...

If you want to test for js, you can register a script after postback:

// normal postback
ScriptManager.RegisterStartupScript(this, GetType(), "key", "script();", true);

// postback from a updatepanel
ScriptManager.RegisterStartupScript(updatePanel, updatePanel.GetType(), "key", "script();", true);
BrunoLM
A: 

Check if js is enabled, and if js is enabled use ClientScript.RegisterStartupScript(this.GetType(), "yourScript", script, true); to execute you js and open your report page. If js id not enabled show a link to the report page.

Vinay Pandey