我如何使用asp.net打印HTML表格。每页上的页眉和页脚

时间:2011-09-02 05:58:31

标签: c# asp.net vb.net c#-4.0

我有动态生成的htmltable。我想打印这张桌子。其中包含很多页面。当我使用window.print()将其打印成7页,8页。但我的问题是每页都需要页眉和页脚(A4大小)。如何设置页眉和页脚到每个页面。 我正在使用带有C#的asp.net。

我把页眉和页脚放在.aspx页面上,但问题是当我打印时数据是动态绑定然后打印多页(即4或5页取决于数据)。因此页眉首页和页脚在最后一页上我需要在每页页眉和页脚

请提供任何建议或替代方法来完成此任务。

3 个答案:

答案 0 :(得分:1)

I tried this solution its working.

<style type="text/css">
@media print {
thead { display: table-header-group; }
tfoot { display: table-footer-group; }
}
@media screen {
thead { display: block; }
tfoot { display: block; }
}

 </style>


 <body>
 <table>
 <thead><tr><td>Your header goes here</td></tr></thead>
 <tbody>
  <tr><td>
   Page body in here -- as long as it needs to be
   </td></tr>
 </tbody>
 <tfoot><tr><td>Your footer goes here</td></tr></tfoot>
 </table>
 </body>

答案 1 :(得分:0)

如果绝对必须有页眉/页脚,则需要在每个X表格单元格中插入分页符,其中X是您希望在每个页面上显示的单元格数。分页符必须复制页眉和页脚。

所以,你的表格看起来像这样:

HEADER
<table>
  <tr><td>Cell Data</td></tr>
  <!-- A bunch of rows -->
  <tr><td>Cell Data</td></tr>
  <tr>
    <td>
    Cell Data
    <div class="pagebreak">
      <div>FOOTER</div>
      <!-- Print page will break here -->
      <div class="header">HEADER</div>
    </div>
    </td>
  </tr>
  <tr><td>Cell Data</td></tr>
  <!-- A bunch of rows -->
  <tr><td>Cell Data</td></tr>
  <tr>
    <td>
    Cell Data
    <div class="pagebreak">
      <div>FOOTER</div>
      <!-- Print page will break here -->
      <div class="header">HEADER</div>
    </div>
    </td>
  </tr>
</table>
FOOTER

然后将以下样式添加到您的页面:

<style type="text/css">
@media all
{
    .pagebreak  { display:none; }
}
@media print
{  
    .pagebreak  { display:block; }
    .pagebreak div.header  { display:block;page-break-before:always; }
}
</style>

编辑:我更新了HTML(希望)更清楚地说明需要做什么。

答案 2 :(得分:-1)

您创建一个母版页,您可以在其中定义页眉区域和页脚区域,并在每个区域中取一个div并在页面后面的代码中访问该div,并将生成的html放在div中 像这样 - div.InnerHtml ==“你的字符串包含html表”