如何在每个打印页面上打印表格?

时间:2014-09-04 10:20:41

标签: javascript php jquery html css

当我打印或打印预览时,我的表包含大量动态行我只使用window.print()函数在第一页上只获得表格。但我想在每个打印页面上使用表格...帮助?

<div id="printablediv" >
<div style="padding:8px;font-size: 13px;">
    <center>
        <?php
        $sumMul = 0;
        $sumBil = 0;
        ?>
        <?php $total = $total_ni = $total_aa = $total_pe = $total_bak = $total_cnt = 0; ?>
        <table cellpadding="0" cellspacing="0" border="1" style="font-size: 13px;" >
            <thead id="head">
                <tr bgcolor="#333333"   style="color:#black;font-weight: bold;">
                    <th  width="100" align="center">Donor</th>
                    <th  width="100" align="center">Loan No.</th>
                    <th  width="120" align="center">Value Date</th>
                    <th  width="90" align="center">Curr</th>
                    <th  width="150" align="center">Multilateral</th>
                    <th  width="150" align="center">Bilateral</th>
                    <th  width="150" align="center">Forex</th>
                    <th  width="150" align="center">Multilateral</th>
                    <th  width="150" align="center">Bilateral</th>
                </tr>
            </thead>
            <?php $previousValue = $list[0]->LOAN_ID; ?>
            <?php $flag = 0; ?>
            <?php foreach ($list as $key => $val): ?>
                <tr>
                    <td align="center"><?php echo $val->EX_DONOR_CODE; ?></td>
                    <td align="center"><?php echo $val->LOAN_ID; ?></td>
                    <td  align="center"><?php echo $val->VALUE_DATE; ?></td>
                    <td align="center"><?php echo $val->TRANSACTION_CURRENCY_CODE; ?></td>
                    <td align="right"><?php
                        if ($val->DONOR_TYPE == 'MULTILATERL') {
                            $sumMul += $val->COMMIT_CUR_AMT;
                            echo $val->COMMIT_CUR_AMT;
                        }
                        ?></td>
                    <td align="right"><?php
                        if ($val->DONOR_TYPE == 'BILATERAL') {
                            $sumBil += $val->COMMIT_CUR_AMT;
                            echo $val->COMMIT_CUR_AMT;
                        }
                        ?></td>
                    <td align="right"><?php //reports::report1_5Forex($val->TRANSACTION_CURRENCY_CODE ,$val->VALUE_DATE) ?></td>
                    <td align ="right"></td>
                </tr>
<?php $previousValue = $val->LOAN_ID ?>

<?php endforeach; ?>
        </table>
        <input type="button" value="Print" id="prt" onclick="javascript:printDiv('printablediv')" />
</div>

我在这里获得了javascript代码:

<script language="javascript" type="text/javascript">
function printDiv(divID) {
    var divElements = document.getElementById(divID).innerHTML;
    var oldPage = document.body.innerHTML;
    document.body.innerHTML =
            "<body>" +
            divElements + "</body>";
    $('#prt').hide();
    window.print();
    $('#prt').show();
    document.body.innerHTML = oldPage;
}

1 个答案:

答案 0 :(得分:0)

您应该使用theadtbody在每个页面上打印表格标题http://www.w3.org/TR/html4/struct/tables.html#edef-THEAD

  

表行可以分组为表头,表脚和一个或   更多桌面部分,使用THEAD,TFOOT和TBODY元素,   分别。此划分使用户代理能够支持滚动   桌子的主体独立于桌子的头部和脚部。 很久   表格是打印的,表头和脚的信息可能是   在包含表格数据的每个页面上重复。

如果这不起作用,浏览器供应商就无法正确实施该标准。