protected void Page_Load(object sender, EventArgs e)
{
//aqui muestro mi reporte en la pagina
if (!Page.IsPostBack)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ToString()))
{
SqlCommand cmd = new SqlCommand("SELECT * from tabla where Cod_user='" + Session["Cod_user"] + "'", con);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable t = new DataTable();
da.Fill(t);
ReportDataSource datasource = new ReportDataSource("DataSet1", t); ReportViewer1.LocalReport.DataSources.Add(datasource);
ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Reportes/Report1.rdlc");
ReportViewer1.LocalReport.Refresh();
}
}
}
}
//boton imprimir
protected void Imprimir_Click(object sender, EventArgs e)
{
}
我有一份带有发票报告查看器的报告,它为我带来数据库中的数据,我希望能够在不需要使用预览的情况下打印它,也就是说,使用单独的按钮通过编程来完成,也就是说,不是使用默认具有reportviewer 的那个。
我希望你能帮助我谢谢
使用 JQUEY 的解决方案
<!--script para imprimir-->
<script type="text/javascript">
function Print() {
var report = document.getElementById("<%=ReportViewer1.ClientID%>");
var div = report.getElementsByTagName("DIV");
var reportContents;
for (var i = 0; i < div.length; i++) {
if (div[i].id.indexOf("VisibleReportContent") !== -1) {
reportContents = div[i].innerHTML;
break;
}
}
var frame1 = document.createElement('iframe');
frame1.name = "frame1";
frame1.style.position = "absolute";
frame1.style.top = "-1000000px";
document.body.appendChild(frame1);
var frameDoc = frame1.contentWindow ? frame1.contentWindow : frame1.contentDocument.document ? frame1.contentDocument.document :frame1.contentDocument;
frameDoc.document.open();
frameDoc.document.write(reportContents);
frameDoc.document.write("<style> @page { size: portrait; } .head { display: none; }></style>");
frameDoc.document.close();
setTimeout(function () {
window.frames["frame1"].focus();
window.frames["frame1"].print();
document.body.removeChild(frame1);
}, 500);
}
</script>
这是这里给出的解决方案,这里是微软提出的解决方案。
希望对你有帮助。