打印时网格的标题位置未固定,

时间:2017-05-30 19:46:14

标签: javascript html css

有一个填充数据的网格,

<asp:Panel ID="Panel1" runat="server" ScrollBars="Auto" Width="1000px" 
  Height="8000px" BorderColor="Black" BorderWidth="1px" Visible="true" BackColor="LightGray">
<asp:GridView ID="List" runat="server" Visible="False" OnRowDataBound="List_RowDataBound" AutoGenerateColumns="true">

      <HeaderStyle CssClass="gridstyleHead" />
      <RowStyle CssClass="gridRowstyle" />

</asp:GridView>

并且有一个适用于网格的样式表

.gridstyleHead {
white-space: nowrap;
text-align: left;
font-family: Arial;
font-size: 10pt;
font-weight: lighter;
padding-left: 3px;
position: relative;
top: expression(this.offsetParent.scrollTop);
z-index: 10;
}

.gridRowstyle {
white-space: nowrap;
border-width: 1px;
background-color: white;
font-family: Arial;
font-size: 9pt;
height: 29px;

}

我正在尝试打印网格中的数据

function btnPrint_Click() {
varfoo="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,
width=500,height=600,left=50,top=25";


  varprintdata=document.getElementById('<%=Panel1.ClientID%>').innerHTML;
        var printWindow = window.open('', 'PRINT', foo);
        var radioButtons = document.getElementsByName("ordrcvd");
        var ord = '';
        for (var x = 0; x < radioButtons.length; x++) {
            if (radioButtons[x].checked) {
                ord = radioButtons[x].value;
            }
        }
        printWindow.document.write('<html><head><link rel="stylesheet" href="css/invoice.css" />');
        printWindow.document.write(' </head><body>');
        printWindow.document.write('<table>');
        printWindow.document.write('<tr><td style = "font-weight:bold;font-family:arial;font-size:12"> order Received' + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  : ');
        printWindow.document.write('</td><td style = "font-weight:normal;font-family:arial;font-size:12">');
        printWindow.document.write(document.getElementById('<%= txtordRcvd.ClientID%>').value);
        printWindow.document.write('</td></tr>');
        printWindow.document.write('<tr><td> </br>');
        printWindow.document.write('</td></tr>');
        printWindow.document.write(' </table>');
        printWindow.document.write(printContent);
        printWindow.document.write('</body></html>');
        printWindow.document.close();
        printWindow.focus();

        return false;
    }

但问题是网格中的标题是不固定的 上一个打印显示网格标题未固定。

网格中未固定的标题很好但是当我尝试打印该网格并向下滚动时,标题位置错位。

任何人都可以建议如何为正在打印的网格应用样式表,以便修复标题

提前致谢,

2 个答案:

答案 0 :(得分:0)

您需要使用打印介质查询。我无法测试它,但我相信你想要这样的东西:

@media print { 
    .gridstyleHead {
        top: 0;
    }
}

或者任何数字都可以让你的标题处于正确的位置。

答案 1 :(得分:0)

这是我的解决方案,我试过这种方式,它对我有用, 之前(如上所述)有一个名为panel1的面板,数据被绑定到该面板中的网格,样式表应用于该网格,该网格表示要修复的标题。 现在,我采用了另一个类似于Panel1的面板,并将其命名为Panel2,但是应用了样式,使得它不显示,并且数据被绑定到该面板2中的网格,类似于之前的流程和样式表应用于该网格,表示标题是“不固定”。希望解释不错。

我遵循的步骤:

我在现有的css文件中包含了一个类,删除了表达式“top:expression(this.offsetParent.scrollTop);”来自gridstyleHead

.gridstyleHeadlocal
{
white-space: nowrap;
text-align: left;
font-family: Arial;
font-size: 10pt;
font-weight: lighter;
padding-left: 3px;
position: relative;

z-index: 10;
}

现在我又采用了另一个Panel2,就像Panel1一样,它的样式为style = Display:none

<asp:Panel ID="Panel2" style = "Display:none" runat="server" 
ScrollBars="Auto" Width="1000px" 
         Height="8000px" BorderColor="Black" BorderWidth="1px" 
        Visible="true" 
       BackColor="LightGray">
       <asp:GridView ID="Listlocal" runat="server" Visible="False" 
        OnRowDataBound="List_RowDataBound" AutoGenerateColumns="true">

        <HeaderStyle CssClass="gridstyleHeadlocal" />
       <RowStyle CssClass="gridRowstyle" />

 </asp:GridView>

并使用打印按钮功能调用Panel2     的document.getElementById( '&LT;%= Panel2.ClientID%GT;')。innerHTML的;

  function btnPrint_Click() {
 varfoo="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=500,height=600,left=50,top=25";


  varprintdata=document.getElementById('<%=Panel2.ClientID%>').innerHTML;
    var printWindow = window.open('', 'PRINT', foo);
    var radioButtons = document.getElementsByName("ordrcvd");
    var ord = '';
    for (var x = 0; x < radioButtons.length; x++) {
        if (radioButtons[x].checked) {
            ord = radioButtons[x].value;
        }
    }
    printWindow.document.write('<html><head><link rel="stylesheet" href="css/invoice.css" />');
    printWindow.document.write(' </head><body>');
    printWindow.document.write('<table>');
    printWindow.document.write('<tr><td style = "font-weight:bold;font-family:arial;font-size:12"> order Received' + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  : ');
    printWindow.document.write('</td><td style = "font-weight:normal;font-family:arial;font-size:12">');
    printWindow.document.write(document.getElementById('<%= txtordRcvd.ClientID%>').value);
    printWindow.document.write('</td></tr>');
    printWindow.document.write('<tr><td> </br>');
    printWindow.document.write('</td></tr>');
    printWindow.document.write(' </table>');
    printWindow.document.write(printContent);
    printWindow.document.write('</body></html>');
    printWindow.document.close();
    printWindow.focus();

    return false;
   }