views:

36

answers:

2

Im using ssrs through a reports server to generate a resultStream byte array using ReportExecutionService.Render() which I am currently serving to the user with the following code. Is there a way I can use this same byte array to automatically open the report in a new browser window instead of going to the save/open dialog?

   public void RenderReport (byte[] reportDigits, ReportItem reportItem)
   {
      HttpResponse response = HttpContext.Current.Response;
      response.Clear();
      response.ContentType = reportItem.ReportMimeType;
      response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", reportItem.ExportName));
      response.OutputStream.Write(reportDigits, 0, reportDigits.Length);
      response.End();
   }

In the past I have used a separate ReportViewer.aspx page that I would open first then display the report but would like to do it all in code behind if that is possible.

Thanks

+1  A: 

It's this line:

response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", reportItem.ExportName));

Thats causing it to be downloaded. Comment out that line, and as long as the browser can handle the mime type, it will render in the browser window.

Jamiec
Sweet thanks! Now how can i get it to open in a new window?
jumpdart
I dont want to takeover anyones page who's tryin to launch a report
jumpdart
javascript - `window.open('url_to_your_report.ext');` - you cant open a new window with server-side code
Jamiec
so save off the file and register the redirect script to it? thats no fun.
jumpdart
A: 

Simply change the Header that you are adding to something other than an attachement. Make it the format of your data--and hopefully the browser will recognize it.

Russ