积极答复者
如何优化这个打印功能

问题
-
下面这段代码是去掉页眉页脚,并且只打印sprnstr = "<!--startprint-->";到
eprnstr = "<!--endprint-->";之间的内容。在界面中我设计了一个DropDownList,可以选择不同的数据行打印,但是每次我打印完一页,界面中的控件<input button...>就消失了,必须按F5才行。目前我只能在window.print();后加上window.location.reload();来强制刷新页面(图1),可是这样还是必须手动点击“重试”才行(如图2).
我的问题是:1.有什么更好的办法让<input button...>不消失么?
2.如果没有更好的办法,至少可以不用每次都点击“重试”么?
-------------------------------------代码1--------------------------------
<script type="text/javascript"> var HKEY_Root, HKEY_Path, HKEY_Key; HKEY_Root = "HKEY_CURRENT_USER"; HKEY_Path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"; //设置网页打印的页眉页脚为空 function PageSetup_Null() { try { var Wsh = new ActiveXObject("WScript.Shell"); HKEY_Key = "header"; Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, ""); HKEY_Key = "footer"; Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, ""); } catch (e) { } } function preview() { bdhtml = window.document.body.innerHTML; sprnstr = "<!--startprint-->"; eprnstr = "<!--endprint-->"; prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17); prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr)); window.document.body.innerHTML = prnhtml; PageSetup_Null(); window.print(); window.location.reload(); } </script> <body> <DropDownList ..................... <input type="button" name="print" value="预览并打印" onclick="preview()" />
--------------------------------------图1------------------------------------
-------------------------------------------图2--------------------------------------------
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
- 已编辑 linjiangxian11 2013年7月2日 1:19
答案
-
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>打印测试</title> <style type="text/css"> @media print { .noprint { display: none; } } </style> <object id="WebBrowser" classid="ClSID:8856F961-340A-11D0-A96B-00C04Fd705A2" width="0" height="0"> </object> </head> <body> <form id="form1" runat="server"> <div class="noprint"> 这些都不会打印</div> <table border="1"> <tr> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> </tr> <tr> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> </tr> <tr> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> </tr> <tr> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> </tr> </table> <div class="noprint"> 这些也不会打印 <div> <a href="#" onclick=" document.all.WebBrowser.Execwb(7, 1) ">打印预览</a> <a href="#" onclick=" document.all.WebBrowser.Execwb(6, 1) ">打印</a><a href="#" onclick=" document.all.WebBrowser.Execwb(8, 1) "></a> </div> </div> </form> </body> </html>
一般可以用WebBrowser+css来控制。- 已建议为答案 彭123 2013年7月12日 14:57
- 已标记为答案 linjiangxian11 2013年7月15日 8:28
全部回复
-
Hi,
因為您把整個body都給置換掉了呀!
// window.document.body.innerHTML = prnhtml;
-
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>打印测试</title> <style type="text/css"> @media print { .noprint { display: none; } } </style> <object id="WebBrowser" classid="ClSID:8856F961-340A-11D0-A96B-00C04Fd705A2" width="0" height="0"> </object> </head> <body> <form id="form1" runat="server"> <div class="noprint"> 这些都不会打印</div> <table border="1"> <tr> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> </tr> <tr> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> </tr> <tr> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> </tr> <tr> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> <td> fdsfds </td> </tr> </table> <div class="noprint"> 这些也不会打印 <div> <a href="#" onclick=" document.all.WebBrowser.Execwb(7, 1) ">打印预览</a> <a href="#" onclick=" document.all.WebBrowser.Execwb(6, 1) ">打印</a><a href="#" onclick=" document.all.WebBrowser.Execwb(8, 1) "></a> </div> </div> </form> </body> </html>
一般可以用WebBrowser+css来控制。- 已建议为答案 彭123 2013年7月12日 14:57
- 已标记为答案 linjiangxian11 2013年7月15日 8:28