最近要做一个有打印功能的Asp.net页面, 就是页面弹出一个层,层包含几张表,然后要打印这个层.请教各位大虾如何实现啊? 小弟万分感谢!

解决方案 »

  1.   

    <form id="Form1" method="post" runat="server">
    <div id="con" runat="server">
    <asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid><input type="hidden" id="content" runat="server"></div>
    <P>
    <asp:Button id="Button1" runat="server" Text="PrintDataGrid"></asp:Button></P>
    <P><FONT face="宋体"></FONT>&nbsp;</P>
    <P>&nbsp;</P>
    </form>.cs
    ==========
    if(!this.IsPostBack) getinfo();
    this.Button1.Attributes.Add("onclick","document.Form1.content.value=document.getElementById('con').innerHTML.split('<').join('&it;').split('>').join('&gt;');");
    }打印
    ==========
    private void Button1_Click(object sender, System.EventArgs e)
    {
    mailbody =content.Value.Replace("&it;","<").Replace("&gt;",">");
    Response.Write(mailbody);
    }
    上述示例是打印一个 ID=con 中的datagrid,你可以借鉴一下。
      

  2.   

    function printPage() {
    document.getElementById("GridView2").AllowPaging = false;
    var newWin = window.open("printer.aspx","","");
    var titleHTML = document.getElementById("printdiv").innerHTML;
    newWin.document.write("<html>");
    newWin.document.write("<body style='text-align:center'>");
    newWin.document.write("<h2>用户登录信息</h2>");
    newWin.document.write(titleHTML);
    newWin.document.write("</body>");
    newWin.document.write("</html>");
    newWin.document.location.reload();
    newWin.print();
    newWin.close();
    document.getElementById("GridView2").AllowPaging = true;
    }
    <div id="printdiv">
        <!--startprint-->
        <asp:GridView ID="GridView2" runat="server" DataKeyNames="id"  AutoGenerateColumns="False"   BorderStyle="None" 
                        BorderWidth="1px" CellPadding="4"  BackColor="#C0C0FF" OnRowDataBound="GridView2_RowDataBound" >
                         <PagerStyle CssClass="GridViewPagerStyle" />
                <Columns >
                   <asp:TemplateField HeaderText ="用户ID">
                      <ItemTemplate>
                         <asp:TextBox ID="user_id" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"login_user_id") %>' BorderWidth="0px"></asp:TextBox>
                      </ItemTemplate>
                       <ItemStyle HorizontalAlign="Center" />
                       <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="100px" />
                   </asp:TemplateField>
                   <asp:TemplateField HeaderText ="登录IP">
                      <ItemTemplate>
                          <asp:TextBox ID="user_ip" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"user_ip") %>' BorderWidth="0px"></asp:TextBox>
                      </ItemTemplate>
                       <ItemStyle HorizontalAlign="Center" />
                       <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="100px" />
                   </asp:TemplateField>
                   <asp:TemplateField HeaderText ="登录时间">
                      <ItemTemplate>
                          <asp:TextBox ID="login_time" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"login_time") %>' BorderWidth="0px"></asp:TextBox>
                      </ItemTemplate>
                       <ItemStyle HorizontalAlign="Center" />
                       <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="100px" />
                   </asp:TemplateField>
                   <asp:TemplateField HeaderText ="操作" ShowHeader=False>
                      <ItemTemplate>
                          <asp:Button ID="Confirm" runat="server" Text="确定" Visible="false" OnClick="Confirm_Click1" />
                          <asp:Button ID="Cancel" runat="server" Text="取消"  Visible="false" OnClick="Cancel_Click1"/>
                      </ItemTemplate>
                       <ItemStyle HorizontalAlign="Center" />
                       <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10px" />
                   </asp:TemplateField>
                </Columns>
            </asp:GridView></div>
    <input id="print" type="button" onclick="printPage()"  value="print"/>
      

  3.   

    ASP.NET 页面打印与预览
    该文章转载自德仔工作室:http://www.dezai.cn/Article_Show.asp?ArticleID=31368C#打印原理
    该文章转载自德仔工作室:http://www.dezai.cn/Article_Show.asp?ArticleID=27330web打印/套打
    该文章转载自德仔工作室:http://www.dezai.cn/Article_Show.asp?ArticleID=31445Asp.net 水晶报表之打印和导出格式
    该文章转载自德仔工作室:http://www.dezai.cn/Article_Show.asp?ArticleID=30670打印网页中定义的部分内容
    该文章转载自德仔工作室:http://www.dezai.cn/Article_Show.asp?ArticleID=22916
      

  4.   

    谢谢各位,这些方法我都试了下,总的说还是3楼的方法最简单,直接调用js就ok了.
    我在网上找了篇比较全面的文章,给大家分享:
    http://hi.baidu.com/isbx/blog/item/54d7d507084a0dce7a8947d4.html