none
Imprimir relatório

    Pergunta

  • Olá novamente

    estou tentando imprimir um relaório por esse tutórial, http://www.dotnetcurry.com/ShowArticle.aspx?ID=92

    mas ao clicar no botão imprimir ele abre a segunda janela mas nela só me aparece o começo do relaório a parte onde esta escrito RELAÓRIO DE PRESTADORES

    mas o resto da reláorio que e gerado atravez de uma consulta ele naum mostra.

    estou fazendo desse jeito para não aparecer os botões e outras coisas na impressão apenas o que esta dentro do Panel.

    Minha página onde contem o relaório gerado.

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RELATORIO.aspx.cs" Inherits="RELATORIO" %>

    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>RELATÓRIO - JL FALCON</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>   
            <table align="center" width="85%" border="2px" bordercolor="#000000">
                <tr>
                    <td align="center" colspan="9">
                        <br />
                        <input type="button" value="  Imprimir  " onclick="window.print();">
                        <input type="button" value="  Sair  " onclick="java script: window.close();" />                   
                        <asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" Text="  Imprimir  " />
                        <br />
                        <br />
                    </td>
                </tr>
            </table>
            <asp:Panel ID="Panel1" runat="server">
            <table align="center" width="85%" border="2px">
                <tr>
                    <td align="center" colspan="2" style="color: Red; font-size: 150%">
                        <u><b>RELATÓRIO DE PRESTADORES</b></u>
                    </td>
                </tr>
            </table>
            <%
                if (!IsPostBack)
                {
                    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
                    string sql = "SELECT * FROM tabOrdemServ WHERE data BETWEEN '01/02/2011' AND '28/02/2011'";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                  
            %>
            <table align="center" width="85%" border="2px">
                <tr>
                    <td align="right" style=" width: 50%">
                        <b>Data:</b>
                    </td>
                    <td align"left" style="width: 50%; color: Blue">
                        <b>01/02/2011 ATÉ 28/02/2011</b>
                    </td>
                </tr>           
            </table>
            <table align="center" width="85%" border="2px">
                <tr align="center">
                    <td align="center" style="width: 40%">
                        <b>Nome</b>
                    </td>
                    <td align="center" style="width: 30%">
                        <b>Data</b>
                    </td>
                    <td align="center" style="width: 30%">
                        <b>Cliente</b>
                    </td>
                </tr>
                <%
                    foreach (DataRow rowPrest in dt.Rows)
                    {        
                %>
                <tr align="center">
                    <td align="left" style="width: 46%">
                        <%=rowPrest["prestador"].ToString() %>
                    </td>
                    <td align="right" style="width: 22%">
                        <%=rowPrest["data"].ToString() %>
                    </td>
                    <td align="right" style="width: 22%">
                        <%=rowPrest["cliente"] %>
                    </td>
                </tr>
                <%                       
                    }                                                 
                %>
            <%
                }
            %>
            </table>       
        </asp:Panel>
        </div>
        </form>
    </body>
    </html>

     

    o code-behind PrintWeb.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Configuration;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.IO;
    using System.Text;

    /// <summary>
    /// Summary description for PrintWeb
    /// </summary>
    public class PrintWeb
    {
        public PrintWeb()
        {   
        }
        public static void PrintWebControl(Control ctrl)
        {
            PrintWebControl(ctrl, string.Empty);
        }
        public static void PrintWebControl(Control ctrl, string Script)
        {
            StringWriter stringWrite = new StringWriter();
            System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
            if (ctrl is WebControl)
            {
                Unit w = new Unit(100, UnitType.Percentage); ((WebControl)ctrl).Width = w;
            }
            Page pg = new Page();
            pg.EnableEventValidation = false;
            if (Script != string.Empty)
            {
                pg.ClientScript.RegisterStartupScript(pg.GetType(), "PrintJavaScript", Script);
            }
            HtmlForm frm = new HtmlForm();
            pg.Controls.Add(frm);
            frm.Attributes.Add("runat", "server");
            frm.Controls.Add(ctrl);
            pg.DesignerInitialize();
            pg.RenderControl(htmlWrite);
            string strHTML = stringWrite.ToString();
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Write(strHTML);
            HttpContext.Current.Response.Write("<script>window.print();</script>");
            HttpContext.Current.Response.End();
           
        }
    }

     

    e o code behind do relatório..

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class RELATORIO : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void btnPrint_Click(object sender, EventArgs e)
        {       
            Session["ctrl"] = Panel1;       
            ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Imprimir.aspx','Imprimir','height=300px,width=300px,scrollbars=1');</script>");

        }
    }

    domingo, 13 de fevereiro de 2011 12:46

Respostas

Todas as Respostas

  • Olá novamente

    estou tentando imprimir um relaório por esse tutórial, http://www.dotnetcurry.com/ShowArticle.aspx?ID=92

    mas ao clicar no botão imprimir ele abre a segunda janela mas nela só me aparece o começo do relaório a parte onde esta escrito RELAÓRIO DE PRESTADORES

    mas o resto da reláorio que e gerado atravez de uma consulta ele naum mostra.

    estou fazendo desse jeito para não aparecer os botões e outras coisas na impressão apenas o que esta dentro do Panel.

    Minha página onde contem o relaório gerado.

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RELATORIO.aspx.cs" Inherits="RELATORIO" %>

    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>RELATÓRIO - JL FALCON</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>   
            <table align="center" width="85%" border="2px" bordercolor="#000000">
                <tr>
                    <td align="center" colspan="9">
                        <br />
                        <input type="button" value="  Imprimir  " onclick="window.print();">
                        <input type="button" value="  Sair  " onclick="java script: window.close();" />                   
                        <asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" Text="  Imprimir  " />
                        <br />
                        <br />
                    </td>
                </tr>
            </table>
            <asp:Panel ID="Panel1" runat="server">
            <table align="center" width="85%" border="2px">
                <tr>
                    <td align="center" colspan="2" style="color: Red; font-size: 150%">
                        <u><b>RELATÓRIO DE PRESTADORES</b></u>
                    </td>
                </tr>
            </table>
            <%
                if (!IsPostBack)
                {
                    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
                    string sql = "SELECT * FROM tabOrdemServ WHERE data BETWEEN '01/02/2011' AND '28/02/2011'";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                  
            %>
            <table align="center" width="85%" border="2px">
                <tr>
                    <td align="right" style=" width: 50%">
                        <b>Data:</b>
                    </td>
                    <td align"left" style="width: 50%; color: Blue">
                        <b>01/02/2011 ATÉ 28/02/2011</b>
                    </td>
                </tr>           
            </table>
            <table align="center" width="85%" border="2px">
                <tr align="center">
                    <td align="center" style="width: 40%">
                        <b>Nome</b>
                    </td>
                    <td align="center" style="width: 30%">
                        <b>Data</b>
                    </td>
                    <td align="center" style="width: 30%">
                        <b>Cliente</b>
                    </td>
                </tr>
                <%
                    foreach (DataRow rowPrest in dt.Rows)
                    {        
                %>
                <tr align="center">
                    <td align="left" style="width: 46%">
                        <%=rowPrest["prestador"].ToString() %>
                    </td>
                    <td align="right" style="width: 22%">
                        <%=rowPrest["data"].ToString() %>
                    </td>
                    <td align="right" style="width: 22%">
                        <%=rowPrest["cliente"] %>
                    </td>
                </tr>
                <%                       
                    }                                                 
                %>
            <%
                }
            %>
            </table>       
        </asp:Panel>
        </div>
        </form>
    </body>
    </html>

     

    o code-behind PrintWeb.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Configuration;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.IO;
    using System.Text;

    /// <summary>
    /// Summary description for PrintWeb
    /// </summary>
    public class PrintWeb
    {
        public PrintWeb()
        {   
        }
        public static void PrintWebControl(Control ctrl)
        {
            PrintWebControl(ctrl, string.Empty);
        }
        public static void PrintWebControl(Control ctrl, string Script)
        {
            StringWriter stringWrite = new StringWriter();
            System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
            if (ctrl is WebControl)
            {
                Unit w = new Unit(100, UnitType.Percentage); ((WebControl)ctrl).Width = w;
            }
            Page pg = new Page();
            pg.EnableEventValidation = false;
            if (Script != string.Empty)
            {
                pg.ClientScript.RegisterStartupScript(pg.GetType(), "PrintJavaScript", Script);
            }
            HtmlForm frm = new HtmlForm();
            pg.Controls.Add(frm);
            frm.Attributes.Add("runat", "server");
            frm.Controls.Add(ctrl);
            pg.DesignerInitialize();
            pg.RenderControl(htmlWrite);
            string strHTML = stringWrite.ToString();
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Write(strHTML);
            HttpContext.Current.Response.Write("<script>window.print();</script>");
            HttpContext.Current.Response.End();
           
        }
    }

     

    e o code behind do relatório..

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class RELATORIO : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void btnPrint_Click(object sender, EventArgs e)
        {       
            Session["ctrl"] = Panel1;       
            ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Imprimir.aspx','Imprimir','height=300px,width=300px,scrollbars=1');</script>");

        }
    }


    Oi,

    aqui você pode colocar para height=100%

     ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Imprimir.aspx','Imprimir','height=100%,width=300px,scrollbars=1');</script>");


    Erysson Barros Blog de Erysson Barros Twitter de Erysson Barros
    (Salmos 128:1) - BEM-AVENTURADO aquele que teme ao SENHOR e anda nos seus caminhos.
    segunda-feira, 14 de fevereiro de 2011 12:00
  • Oi Erysson, então nessa parte que vc esta pedindo pra eu colocar height=100%, antes eu tinha tentado mudar pra 500 cada, e o que mudou foi só o tamanho da janela que vai abrir ela só aumentou.. porém ainda não testei com isso q vc me flw mas quando eu chegar em casa eu testo.

     

    vc já usou alguma vez esse metodo para impressão??

    segunda-feira, 14 de fevereiro de 2011 16:11
  • Oi Erysson, então nessa parte que vc esta pedindo pra eu colocar height=100%, antes eu tinha tentado mudar pra 500 cada, e o que mudou foi só o tamanho da janela que vai abrir ela só aumentou.. porém ainda não testei com isso q vc me flw mas quando eu chegar em casa eu testo.

     

    vc já usou alguma vez esse metodo para impressão??


    Oi,

    ainda não utilizei, tentar forçar no seu panel height=xxxx


    Erysson Barros Blog de Erysson Barros Twitter de Erysson Barros
    (Salmos 128:1) - BEM-AVENTURADO aquele que teme ao SENHOR e anda nos seus caminhos.
    segunda-feira, 14 de fevereiro de 2011 16:32
  • Oi Erysson não funcionou o que eu percebi foi que ele imprimi tudo antes de chegar essa tag <% ai depois ele naum mostra o resto,

    vc sabe alguma outra forma de se imprimir um relatório definindo o conteudo dele digo para não imprimir os botões e algumas outras coisas q naum fazem parte do relatório..

    terça-feira, 15 de fevereiro de 2011 01:43
  • Oi Erysson não funcionou o que eu percebi foi que ele imprimi tudo antes de chegar essa tag <% ai depois ele naum mostra o resto,

    vc sabe alguma outra forma de se imprimir um relatório definindo o conteudo dele digo para não imprimir os botões e algumas outras coisas q naum fazem parte do relatório..


    Oi,

    utilizando Css você pode ocultar elementos html durante a impressão:

    http://oraculum.blog.br/blogoraculum/index.php/2009/09/21/css-ocultar-divs-na-impressao/

    http://pt.w3support.net/index.php?db=so&id=355313

     


    Erysson Barros Blog de Erysson Barros Twitter de Erysson Barros
    (Salmos 128:1) - BEM-AVENTURADO aquele que teme ao SENHOR e anda nos seus caminhos.
    terça-feira, 15 de fevereiro de 2011 11:34