想在一个网页上实现多页打印(每一个单据号打印一页),每一页用一个WEB控件TABLE实现表体,用一些LABEL实现标题等。
初步实现方法是在同一个页上计算TABLE表格和LABEL等控件要放置的位置然后通过
TABEL1.Attributes.Add("style", "LEFT:24px; POSITION: absolute; TOP: " & ty + 168 & "px ")来实现。
ty的值是算出打印一页的高度也就是说下一个TABLE距当前网页的高度值,这样在调用IE自带的网页打印功能时正好是下一页的开始位置。
所以最终实现在一个网页上放置多个TABLE,调整各TABLE,LABEL的TOP值,使之间隔正好
在打印时是独立页,这样出现了2个问题,一个是在不同分辨率下(如1024*768),打印出来的
各页中内容(TABLE,LABEL)的位置不对齐,可能下一页比上一页位置要往下
而且内容的宽度超过了打印页的宽度(800*600下没有)。
第二个问题就是在本机800*600下打印出来的各页TABLE,LABEL位置是对齐的话,在其他机器下同样分辨率打印出来是对不齐的,不知道为什么?望高手赐教,大家在多页打印的时候怎么解决
预览和打印的问题呢?谢谢各位了~~!

解决方案 »

  1.   

    朋友,你的ASP.NET 下水晶报表能打印了吗?帮我看看吧!!:)我的帖子在你下面的几篇,谢谢
      

  2.   

    <style media="print">
      .Noprint { DISPLAY: none }
      .PageNext { PAGE-BREAK-AFTER: always }
    </style><div runat="server" class="PageNext" id="Div2"></div>Div2 是打印时的分页符
    值得一提:上述分页符在 Repeater 最后一个项目中需要隐藏,不然将会出现一张空白页以下是 WEB 打印的方法<div class="Noprint"><input type="button" value="打印" onclick="print()"></div>
      

  3.   

    不太明白,比如我一个页面上放了2个TABLE,用你的方法是这样用吗?
    <div runat="server" class="PageNext" id="Div2">
    <table>....
    </table id=tab1>
    </div>
    <div runat="server" class="PageNext" id="Div2">
    <table id=tab2>....
    </table>
    </div>
    是说要把在一个页中打印的所有内容放到这样一个DIV中吗?
    可是这样打印出来2个TABLE还是在一个页上,没有分开打印
      

  4.   

    不是,Div2 只是做个符号用,犹如一道切割线
    <table id=tab1>
    ....
    </table>
    <div runat="server" class="PageNext" id="Div2"></div>
    <table id=tab2>
    ....
    </table>
    <div runat="server" class="PageNext" id="Div2"></div>
    <table id=tab3>
    ....
    </table>以上就对啦
      

  5.   

    这样做了还是没有分页,2个表预览和打印还是都在一页中,复上代码
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm2.aspx.vb" Inherits="Pc_Fas.WebForm2"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm2</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <style media="print">
    .Noprint { DISPLAY: none }
    .PageNext { PAGE-BREAK-AFTER: always }
    </style>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <asp:table id="Table1" style="Z-INDEX: 101; LEFT: 106px; POSITION: absolute; TOP: 89px" runat="server"
    Height="188px" Width="377px" GridLines="Both" BorderStyle="Solid" BorderWidth="1px" CellSpacing="0"
    CellPadding="0">
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell ColumnSpan="3" Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell ColumnSpan="3" Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    </asp:table>
    <div runat="server" class="PageNext" id="Div2"></div>
    <asp:table id="Table2" style="Z-INDEX: 102; LEFT: 96px; POSITION: absolute; TOP: 508px" runat="server"
    Height="188px" Width="377px" GridLines="Both" BorderStyle="Solid" BorderWidth="1px" CellSpacing="0"
    CellPadding="0">
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell ColumnSpan="3" Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
    <asp:TableCell Text="&amp;nsbp;"></asp:TableCell>
    <asp:TableCell ColumnSpan="3" Text="&amp;nsbp;"></asp:TableCell>
    </asp:TableRow>
    </asp:table>
    <div class="Noprint"><input type="button" value="打印" onclick="print()"></div>
    </form>
    </body>
    </HTML>
      

  6.   

    好象是对于HTML的控件才有分页的作用,对于WEB的控件没有分页的效果?
      

  7.   

    把下列語句去掉 style="Z-INDEX: 102; LEFT: 96px; POSITION: absolute; TOP: 508px"
      

  8.   

    我在代码里动态创建TABLE,而且事先也不知道有多少TABLE要打印,那么在代码里(VB)如何把分页的那句话加进去呢?比如代码的 过程CreatTable()是创建一个TABLE的,应该怎么加
    <div class="PageNext"></div>?
      

  9.   

    暈倒,看來這幾十分不好拿呀
    辦法是人想出來的:
    在你執行 CreatTable() 後,不妨再加上一句…….Controls.Add(new LiteralControl("<div class='PageNext'></div>"));
      

  10.   

    嘿嘿,我初学,很多不知道的方法,多担待...,另外还有个问题请教,象这种分页后都是在页的最顶端开始打印,有没有办法控制TABLE,LABEL的位置,比如标题相对整个页面来说居中,TABLE居中,用DIV吗?一个页面要放很多TABEL怎么办?用一个DIV框住所有来达到居中目的能达到吗?还是有其他更好的办法,cityhunter172(寒羽枫)多多指教啊~马上结贴~~~
      

  11.   

    那么DIV的宽度和高度又应该怎么设呢?