asp.net中的“按需打印”(打印你需要打印的部分) 實(shí)現(xiàn)代碼
過程很簡單:
首先在asp.net頁面中設(shè)定開始打印和結(jié)束打印的標(biāo)記,為了確保該標(biāo)記不在網(wǎng)頁瀏覽時顯示,我們采用"<!-- HTML注釋 -->"的方式。比如:<!--startprint-->和<!--endprint-->。
接著寫相關(guān)的JavaScript代碼,具體代碼見后。
如果不想打印按鈕也被打印出來,注意將打印按鈕包含在<!--startprint-->和<!--endprint-->之外。
相關(guān)代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AppealPrint.aspx.cs" Inherits="Appeal.AppealPrint"
MasterPageFile="MasterPage.master" Title="訴求打印" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CphNavigation" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="CphContent" runat="server">
<!--startprint-->
<style type="text/css">
body,table{
font-size:12px;
}
table{
table-layout:fixed;
empty-cells:show;
border-collapse: collapse;
margin:0 auto;
}
td{
height:20px;
}
h1,h2,h3{
font-size:12px;
margin:0;
padding:0;
}
table{
border:1px solid #cad9ea;
color:#666;
}
table th{
height:30px;
}
table td,table th{
border:1px solid #cad9ea;
padding:0 1em 0;
}
table tr{
background-color:#f5fafe;
}
</style>
<table class="border" cellspacing="0" cellpadding="2" style="margin: 0px auto; width: 98%;border:1px solid;border-collapse:collapse;" id="TabBtnPrint">
<tbody>
<tr align="center">
<td class="title"><strong>訴 求 信 息</strong></td>
</tr>
<tr>
<td style="height: 25px">
<table cellspacing="1" cellpadding="2" style="margin: 0px auto; width: 100%;border-collapse:collapse;">
<tbody>
<tr class="tdbg">
<td width="30%" align="right" nowrap="nowrap">訴求主題:</td>
<td colspan="3">
<asp:Label ID="lblEditTitle" runat="server" Text="Label"></asp:Label>
</td>
</tr>
<tr class="tdbg">
<td align="right" width="30%" nowrap="nowrap">訴求類型:</td>
<td colspan="3">
<asp:Label ID="lblAppealCategory" runat="server" Text=""/>
</td>
</tr>
<tr class="tdbg">
<td align="right" width="30%" nowrap="nowrap">訴求當(dāng)前狀態(tài):</td>
<td colspan="3">
<asp:Label ID="LblStatus" runat="server" Text="Label"/>
</td>
</tr>
<tr class="tdbg">
<td align="right" style="width: 30%" nowrap="nowrap">訴求性質(zhì):</td>
<td style="width: 15%"><asp:Label ID="lblAppealNature" runat="server" Text="Label"/></td>
<td align="right" style="width: 25%" nowrap="nowrap">被投訴人姓名:</td>
<td style="width: 30%"><asp:Label ID="lblBeAppealName" runat="server" Text="Label"/></td>
</tr>
<tr class="tdbg">
<td align="right" style="width: 30%" nowrap="nowrap">被投訴人地址:</td>
<td style="width: 15%"><asp:Label ID="lblBeAppealAddress" runat="server" Text="Label"/></td>
<td align="right" style="width: 25%" nowrap="nowrap">投訴人:</td>
<td style="width: 30%"><asp:Label ID="lblUserName" runat="server" Text="Label"/></td>
</tr>
<tr class="tdbg">
<td align="right" style="width: 30%" nowrap="nowrap">訴求信息是否保密:</td>
<td style="width: 15%"><asp:Label ID="lblIsSecret" runat="server" Text="Label"/></td>
<td align="right" style="width: 25%" nowrap="nowrap">管理員是否同意公開:</td>
<td style="width: 30%" align="right"><asp:Label ID="lblAdminIsPublic" runat="server" Text="Label"/></td>
</tr>
<tr class="tdbg">
<td align="right" style="width: 30%" nowrap="nowrap">瀏覽數(shù):</td>
<td style="width: 15%"><asp:Label ID="lblHits" runat="server" Text="Label"/></td>
<td align="right" style="width: 25%" nowrap="nowrap">回復(fù)數(shù):</td>
<td style="width: 30%"><asp:Label ID="lblReply" runat="server" Text="Label"/></td>
</tr>
<tr class="tdbg">
<td align="right" style="width: 30%" nowrap="nowrap">歸檔:</td>
<td style="width: 15%"><asp:Label ID="lblCategory" runat="server" Text=""/></td>
<td align="right" style="width: 25%" nowrap="nowrap">訴求提交時間:</td>
<td style="width: 30%"><asp:Label ID="lblCreateTime" runat="server" Text="Label"/></td>
</tr>
<tr class="tdbg">
<td align="right" style="width: 30%" nowrap="nowrap">訴求所在地域:</td>
<td colspan="3"><asp:Label ID="lblRegion" runat="server" Text=""></asp:Label></td>
</tr>
<tr class="tdbg">
<td colspan="4"><asp:Label ID="Label2" runat="server" Text=""/></td>
</tr>
<tr class="tdbg">
<td colspan="4" align="left" valign="top" nowrap="nowrap">訴求內(nèi)容:</td>
</tr>
<tr class="tdbg">
<td colspan="4" align="left" valign="top">
<pe:ExtendedLiteral ID="LtrEditContent" runat="server" HtmlEncode="false"/>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!--endprint-->
<br />
<div id="divBtnPrint" style="text-align:center">
<input id="BtnPrint" type="button" value="打 印…" onclick="doPrint();" />
</div>
<br />
<script type="text/javascript">
<!--
function doPrint(){
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;
var obj = window.document.body;
doZoom(obj, 18); //放大打印
window.print();
}
function doZoom(artibody, size) {
if (!artibody)
{
return;
}
setChildNodesByCurrentNode(artibody,size);
}
function setChildNodesByCurrentNode(node,size) {
for(var i=0; i < node.childNodes.length; i++) {
var artibodyChild = node.childNodes[i];
if (artibodyChild.nodeType == 1) {
artibodyChild.className="";
artibodyChild.style.fontSize = size + 'px';
artibodyChild.style.fontFamily = '仿宋_GB2312,宋體,"Times New Roman",Georgia,serif';
artibodyChild.style.fontWeight = 900;
if(artibodyChild.childNodes.length>0) {
setChildNodesByCurrentNode(artibodyChild,size);
}
}
}
}
-->
</script>
</asp:Content>
觀察上面代碼可以看出,打印時,window.document.body.innerHTML 被重新賦值成設(shè)定需要打印的網(wǎng)頁部分的代碼(這里是 prnhtml),然后通過遞歸方式調(diào)用setChildNodesByCurrentNode(artibody,size)更改相關(guān)子節(jié)點(diǎn)的樣式,以達(dá)到全部更換相關(guān)字體大小及樣式設(shè)置的目的。
相關(guān)文章
.NetCore?Web?Api?利用ActionFilterAttribute統(tǒng)一接口返回值格式及問題解析
在實(shí)際項(xiàng)目開發(fā)過程中,統(tǒng)一API返回值格式對前端或第三方調(diào)用將是非常必要的,在.NetCore中我們可以通過ActionFilterAttribute來進(jìn)行統(tǒng)一返回值的封裝,對.NetCore?Web?Api?統(tǒng)一接口返回值格式相關(guān)知識感興趣的朋友一起看看吧2022-03-03ASP.NET Core 3.x 并發(fā)限制的實(shí)現(xiàn)代碼
這篇文章主要介紹了ASP.NET Core 3.x 并發(fā)限制的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11asp.net(vb.net)獲取真實(shí)IP的函數(shù)
asp.net(vb.net)獲取真實(shí)IP的函數(shù),需要的朋友可以參考下。2010-11-11.NetCore實(shí)現(xiàn)上傳多文件的示例詳解
本章和大家分享的是.NetCore的MVC框架上傳文件的示例,主要講的內(nèi)容有:form方式提交上傳,ajax上傳,ajax提交+上傳進(jìn)度效果,Task并行處理+ajax提交+上傳進(jìn)度,對大家非常有幫助,感興趣的朋友跟隨小編一起學(xué)習(xí)吧2017-04-04利用ASP.NET MVC+Bootstrap搭建個人博客之修復(fù)UEditor編輯時Bug(四)
這篇文章主要介紹了利用ASP.NET MVC+Bootstrap搭建個人博客之修復(fù)UEditor編輯時Bug(四)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06在asp.net中獲取當(dāng)前頁面的URL的方法(推薦)
下面小編就為大家?guī)硪黄赼sp.net中獲取當(dāng)前頁面的URL的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09Remoting和Webservice的詳細(xì)介紹及區(qū)別
這篇文章主要介紹了Remoting和Webservice的詳細(xì)介紹及區(qū)別的相關(guān)資料,需要的朋友可以參考下2016-11-11