To accomplish this, you need two ASPX pages and a Crystal Report.
& "window.open('viewpage.aspx','Report');" & vbCrLf _
& "< / s c r i p t >" & vbCrLf
In the example above, we are simply using the name "Report." You can edit the script to use a different window name assigned at runtime. You will want to do this if you are opening more than one report from a launch page, since browsers will not open a second window with the same name as the one that is already open (and most browsers will replace the contents of the window).
The second part of the code above tells the ASP.NET engine to add a script to be executed when the page is loaded. Keep in mind that the launch page will be reloaded in the client's browser after the postback, and this is what allows us to use a startup script to open a new window.
The View page should have all the code to render your report in its Page_Init. If any parameters are used, they should be read from the session variables or querystring and passed to the report. The View page can export reports and be used to navigate the report.
Remember on your Launch page to use If Not IsPostBack around your code that originally populates the page so you don't reset any user input.
The window.open method can accept two more parameters. One parameter is a string of key-value pairs that control the appearance of the new window. You can turn off the address bar, set the height and width, etc. A good reference for the window.open method can be found at http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods/open_0.asp.
You can use this code snippet to open any type of file in a new window. This technique is not limited to just Crystal Reports.