RE:Imprimir Directamente - C#
Publicado por
fmonte (1 intervención) el 30/10/2008 16:05:50
Hola Cristian, mira yo lo solucione de la siguiente manera, lo hice en C# despues adaptalo.
1) Dentro del aspx agregar:
<%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
2) Dentro del aspx en <head>, agrega lo ste:
<link href="/aspnet_client/System_Web/2_0_50727/CrystalReportWebFormViewer3/css/default.css"
rel="stylesheet" type="text/css" />
3) Agregar
<iframe id="iframe" runat=server scrolling=no style="visibility:hidden">
4) Luego en el evento de imprimir
protected void btnImprimir_Click(object sender, EventArgs e)
{
Session["REPORT"] = null;
Session["cargar"] = null;
Page.RegisterStartupScript("print", "<script>document.getElementById('" + iframe.ClientID + "').src='CrystalViewer.aspx';</script>");
}
5)En la pagina CrystalViewer.aspx en el aspx poner lo ste:
<%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
.....
<div id="divReporte" runat="server" style="visibility: visible">
<CR:CrystalReportViewer id="crystal" runat="server" autodatabind="true" hasexportbutton="False"
hasgotopagebutton="False" hassearchbutton="False" hastogglegrouptreebutton="False"
haszoomfactorlist="False" height="50px" width="350px"></CR:CrystalReportViewer>
</div>
.......
en CrystalViewer.aspx.cs dentro del PageLoad hacer lo ste:
private ReportDocument report;
string path = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["cargar"] == null && Session["REPORT"] == null)
{
string path = @Server.MapPath("~/ Tu Reporte .rpt");
path = path.Replace("\", "\\");
report = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
report.Load(path, CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy);
DataSet datasourse = obtenes tu dataSet
report.SetDataSource(datasourse);
crystal.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
Session.Add("REPORT", report);
report.PrintOptions.PaperOrientation = PaperOrientation.Landscape;
report.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA4;
crystal.ReportSource = report;
string imagePrint = crystal.Controls[2].Controls[1].ClientID; //Obtenes el boton de imporimir que pertener al control de Crystal
Page.RegisterStartupScript("print", "<script>printReview('" + imagePrint + "');</script>");
Session["cargar"] = true;
}
else
if ((Session["REPORT"] != null && Session["cargar"] != null))
{
report = (ReportDocument)Session["REPORT"];
crystal.ReportSource = report;
Session["cargar"] = null;
}
else
{
report = (ReportDocument)Session["REPORT"];
crystal.ReportSource = report;
}
}
Con esto vas a lograr imprimir el reporte completo, para imprimir la ultima pagina fijate las propiedades de report.PrintOptions si hay algo que setee la ultima pagina.
Saludos y suerte!!