如何通过滚动打印网格视图
本文关键字:网格 视图 打印 滚动 何通过 | 更新日期: 2023-09-27 18:28:22
我正在制作一个网格视图,它使用滚动,因为列的宽度大于我网页的页面宽度。问题是当我想打印时,它只打印显示的数据。如何在div或面板中打印所有内容?
我的GRIDVIEW代码:
<a href="#" onclick="printPartOfPage('content-middle')" >PRINT ME </a>
<asp:Panel ID="gridPanel" runat="server" Height="500px" Width="980px" ScrollBars="Auto">
<asp:GridView EnableSortingAndPagingCallbacks="true" Width="450px"
OnRowCreated="GridView1_RowCreated" runat="server" ID="GridView2"
CellPadding="4" ForeColor="#333333" GridLines="None"
>
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="ID"
DataNavigateUrlFormatString="updateAppointmentOperations.aspx?showID={0}" Text="Update "
Target="_blank" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
</asp:Panel>
我从互联网上得到的javascript打印是:
<script type="text/javascript">
function printPartOfPage(elementId) {
var printContent = document.getElementById(elementId);
var windowUrl = 'about:blank';
var uniqueName = new Date();
var windowName = 'Print' + uniqueName.getTime();
var printWindow = window.open(windowUrl, windowName, 'left=50000,top=50000,width=0,height=0');
printWindow.document.write('<link rel="stylesheet" type="text/css" href="style/additional.css" /><link rel="stylesheet" type="text/css" href="style/default.css" /><link rel="stylesheet" type="text/css" href="style/hi-res.css" />' + printContent.innerHTML);
printWindow.document.close();
printWindow.focus();
printWindow.print();
printWindow.close();
}
gridview位于div中,id内容居中。
感谢
您可以在页面上包含另一个GridView,它将仅用于打印。
切换显示哪一个的方法是根据需要用CSS类装饰这两个。
例如:
<style>
@media print {
.PrintOnly { display:block; }
.ScreenOnly { display:none; }
}
@media screen {
.PrintOnly { display:none; }
.ScreenOnly { display:block; }
}
</style>
有几种方法可以做到这一点。可能最用户友好的是使用css来设置不同的样式,以便使用@media指令进行显示和打印。不要设置dridPanel的高度和宽度属性,而是在介质为"屏幕"时使用css设置高度和宽度-500和980,在打印介质时仅将宽度设置为100%。(让hdieght保持原样,它应该显示所有内容)
有关@media-css指令的更多信息,请点击此处:http://www.w3schools.com/CSS/css_mediatypes.asp
这里有一篇关于使用css使页面对打印机友好的好文章:http://www.envisionic.com/webtips/user_experience/printer_friendly.php
好的-这是可能的,但我真的会劝阻你不要这么做。利用Crystal Reports或其他任何东西。甚至还有几个使用RDL的开源报告解决方案。
你在水晶球场30分钟内能做的事情需要更长的时间。我做了大量的研究,看看这是否可能。MSDN有一篇文章适用于
http://msdn.microsoft.com/en-us/library/aa479018.aspx
它介入并定义了system.web.ui.page的替代方案,我必须承认它做得很好。我不得不做一个小调整,因为用户想要一个页面行计数器。
我可以再次证明它是有效的——执行分页、列标题、控制中断、可以合计列。如果你想控制你的利润,那么考虑MEADCO(我认为)javascript库。此外,它还包括一些逻辑,这样用户也可以浏览,但我无法让它工作。但考虑到我只有3个月的ASP经验,这可能是一个简单的解决方案。
欢迎使用我的VS2010DLL解决方案。如果我能帮忙,请告诉我。