Hi,
I reviewed the code you that u sent us and here is your problem: The form which tries to open the pdf file must be a gizmox gateway control ("IGatewayControl") so it will handle the file writing response disconected from WebGUI's main response. In order to solve your problem, implement the Gizmox.WebGUI.Common.Interfaces.IGatewayControl interface as follow:
public class Form1 : Form, IGatewayControl
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Link.Open(new GatewayReference(this, "open"));
}
#region IGatewayControl Members
public IGatewayHandler GetGatewayHandler(IContext objContext, string strAction)
{
LocalReport local = new LocalReport();
local.ReportPath = Context.Server.MapPath("~/Report1.rdlc");
DataSet1 dataSet = new DataSet1();
DataSet1TableAdapters.Tabla1TableAdapter Adapter = new WebGUIApplication1.DataSet1TableAdapters.Tabla1TableAdapter();
Adapter.Fill(dataSet.Tabla1);
ReportDataSource dataSource = new ReportDataSource("DataSet1_Tabla1", dataSet.Tabla1);
local.DataSources.Add(dataSource);
string reportType = "PDF";
string mimeType = "application/pdf";
string encoding;
string fileNameExtension;
//The DeviceInfo settings should be changed based on the reportType
//http://msdn2.microsoft.com/en-us/library/ms155397.aspx
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>11in</PageHeight>" +
" <MarginTop>0.5in</MarginTop>" +
" <MarginLeft>1in</MarginLeft>" +
" <MarginRight>1in</MarginRight>" +
" <MarginBottom>0.5in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
//Render the report
renderedBytes = local.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
//Clear the response stream and write the bytes to the outputstream
//Set content-disposition to "attachment" so that user is prompted to take an action
//on the file (open or save)
HttpResponse objResponse = this.Context.HttpContext.Response;
objResponse.Clear();
objResponse.ClearHeaders();
objResponse.ContentType = mimeType;
objResponse.AddHeader("content-disposition", "attachment; filename=foo." + fileNameExtension);
objResponse.BinaryWrite(renderedBytes);
objResponse.Flush();
objResponse.End();
return null;
}
#endregion
}
Hope it helped,
Shlomi