Как мне распечатать таблицу HTML, используя asp.net.Верхний и нижний колонтитулы на каждой странице - PullRequest
1 голос
/ 02 сентября 2011

У меня есть htmltable, который динамически генерируется. Я хочу напечатать эту таблицу. которые состоят из множества страниц. когда я использовал window.print () его печать на 7, 8 страницах. но моя проблема в том, что мне нужен верхний и нижний колонтитулы на каждой странице (размер A4). Как установить верхний и нижний колонтитулы для каждой страницы. Я использую asp.net с C #.

Я помещаю верхний и нижний колонтитулы на страницу .aspx, но проблема в том, что данные связываются динамически, когда я печатаю, а затем печать идет на нескольких страницах (то есть 4 или 5 страниц зависят от данных). Таким образом, верхний и нижний колонтитулы находятся на первой странице, а нижний колонтитул на последней странице. Мне нужен верхний и нижний колонтитулы на каждой странице

Пожалуйста, предоставьте мне любое предложение или альтернативный способ выполнения этой задачи.

Ответы [ 3 ]

1 голос
/ 13 сентября 2011
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>
0 голосов
/ 02 сентября 2011

Если вы абсолютно должны иметь верхний / нижний колонтитул, вам нужно будет вставить разрыв страницы в каждую ячейку таблицы 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, чтобы (надеюсь) сделать более понятным, что нужно сделать.

0 голосов
/ 02 сентября 2011

Вы создаете главную страницу, в которой вы определяете область заголовка и область нижнего колонтитула, берете один div в каждой области, получаете доступ к этому div в коде позади страницы и помещаете свой сгенерированный html в div следующим образом - div.InnerHtml == "Ваша строка, содержащая HTML-таблицу"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...