惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - Niko

SQLServer使用注意规范 . windows2008 导出Excel 配置。 Web.config 数据库连接字符串加密 NHibernate.AdoNet.TooManyRowsAffectedException: Unexpected row count: 19; expected: 1 安装sql server 2008 注意事项 - Niko 添加 程序映射 链接服务器"(null)"的 OLE DB 访问接口 Microsoft Office Excel 不能访问文件 Win2008 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败解决方法 excel 汇入, SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问 - Niko 卸载 vs 2008 asp.net 异步调用 MSSQL2005 建立分区 Asp.net2.0 defaultButton 不支持firefox解决方法 Rational Rose 安装破解, 和常见问题解决 Gridview 选中checkbox 时, 展开子节点, 同时选中父节点 - Niko Grid view 级联选择 - Niko Database diagram support objects cannot be installed because this database does not have a valid owner. ASP.NET动态生成控件问题。 - Niko - 博客园
ASP.net 打印页面内容 - Niko - 博客园
Niko · 2010-11-03 · via 博客园 - Niko

客户端打印页面内容的2种方法,

方法一:用js 来实现 

代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title>无标题页</title>
    
<script type="text/javascript" language="javascript">
        
function printSpecial()
        {
            
var html = '<HTML>\n<HEAD>\n';if (document.getElementsByTagName != null)
            {
                
var headTags = document.getElementsByTagName("head");
                
if (headTags.length > 0)
                html 
+= headTags[0].innerHTML;
            }

            html 

+= '\n</HEAD>\n<BODY>\n<div style="height:150px;"></div>';var printReadyElem = document.getElementById("printPart");if (printReadyElem != null)
            {
               
                html 
+= printReadyElem.innerHTML;
            }
            
else
            {
                alert(
"Could not find the printPart div");
                
return;
            }
             
            html 
+= '\n</BODY>\n</HTML>';var printWin = window.open("","printSpecial");
            printWin.document.open();
            printWin.document.write(html);
            printWin.document.close();      
            printWin.print();        
        }
</script>
</head>
<body>
    
<form id="form1" runat="server">
    
<asp:Button ID="btnPrint" runat="server" Text="Print" OnClick="btnPrint_Click" />
    
<input type="button" value="Print Graph" onclick="printSpecial();" />
    
<div id="printPart" >
        
<asp:Chart ID="Chart1" runat="server" ImageType="Png" ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)"
            Width
="600px" Height="296px" BorderDashStyle="Solid" Palette="BrightPastel" BackGradientStyle="TopBottom"
            BorderWidth
="2" BackColor="#33DFC1" BorderColor="181, 64, 1">
            
<Legends>
                
<asp:Legend Enabled="False" Name="Default" BackColor="Transparent">
                
</asp:Legend>
            
</Legends>
            
<BorderSkin SkinStyle="Emboss"></BorderSkin>
            
<Series>
                
<asp:Series BorderWidth="3" XValueType="Double" Name="Default" ChartType="Line" ShadowColor="Transparent"
                    BorderColor
="180, 26, 59, 105"  Color="Red" YValueType="Double">
                    
<Points>
                        
<asp:DataPoint XValue="1" YValues="400" />
                        
<asp:DataPoint XValue="2" YValues="200" />
                        
<asp:DataPoint XValue="3" YValues="700" />
                        
<asp:DataPoint XValue="4" YValues="300" />
                        
<asp:DataPoint XValue="5" YValues="450" />
                    
</Points>
                
</asp:Series>
                
<asp:Series BorderWidth="3" Name="Series2"  Color="Blue" ChartType="Line" BorderColor="Green">
                    
<Points>
                        
<asp:DataPoint XValue="1" YValues="200" />
                        
<asp:DataPoint XValue="2" YValues="300" />
                        
<asp:DataPoint XValue="3" YValues="350" />
                        
<asp:DataPoint XValue="4" YValues="80" />
                        
<asp:DataPoint XValue="5" YValues="400" />
                    
</Points>
                
</asp:Series>
                
<asp:Series BorderWidth="3" Name="Series3"  Color="Green" ChartType="Line">
                    
<Points>
                        
<asp:DataPoint XValue="1" YValues="500" />
                        
<asp:DataPoint XValue="2" YValues="120" />
                        
<asp:DataPoint XValue="3" YValues="300" />
                        
<asp:DataPoint XValue="4" YValues="50" />
                        
<asp:DataPoint XValue="5" YValues="130" />
                    
</Points>
                
</asp:Series>
              
            
</Series>
            
<ChartAreas>
                
<asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BackSecondaryColor="White"
                    BackColor
="OldLace" ShadowColor="Transparent" BackGradientStyle="TopBottom">
                    
<AxisY2>
                        
<MajorGrid Enabled="False" />
                    
</AxisY2>
                    
<AxisX2>
                        
<MajorGrid Enabled="False" />
                    
</AxisX2>
                    
<Area3DStyle PointGapDepth="0" Rotation="5" Perspective="10" Inclination="15" IsRightAngleAxes="False"
                        WallWidth
="0" IsClustered="False"></Area3DStyle>
                    
<AxisY LineColor="6, 64, 64, 64" IsLabelAutoFit="False">
                        
<LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" />
                        
<MajorGrid LineColor="255, 0, 0, 0" />
                    
</AxisY>
                    
<AxisX LineColor="64, 64, 64, 64" IsLabelAutoFit="False">
                        
<LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" />
                        
<MajorGrid LineColor="255, 0, 0, 0" />
                        
<StripLines>
                            
<asp:StripLine StripWidth="2" Interval="3" IntervalOffset="0.5" BackColor="64, 191, 191, 191">
                            
</asp:StripLine>
                        
</StripLines>
                    
</AxisX>
                
</asp:ChartArea>
            
</ChartAreas>
        
</asp:Chart>
    
</div>
    
</form>
</body>
</html>

 方法2:通过后台代码实现(使用MSChart, updatePanel 会有问题), 这种方法其实和方法一一样。

主页面前台代码

代码

 <asp:Button ID="btnPrint" runat="server" Text="Print" OnClick="btnPrint_Click" />
 
<asp:Panel ID="Panel1" runat="server">
    
<asp:Label ID="Label1" runat="server" Text="Test Print"></asp:Label>
 
</asp:Panel>

 主页面后台代码

代码

public partial class _Default : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {       
    }
    
protected void btnPrint_Click(object sender, EventArgs e)
    {
        Session[
"ctrl"= this.Panel1;
        ClientScript.RegisterStartupScript(
this.GetType(), "onclick""<script language=javascript>window.open('Print.aspx','PrintMe','height=600px,width=800px,scrollbars=1');</script>");
    }
}

 打印页面后台代码: 

代码

 protected void Page_Load(object sender, EventArgs e)
 {
     PrintHelper.PrintWebControl((Control)Session[
"ctrl"]);
 }

 打印方法: 

代码

using System.Web.UI.DataVisualization.Charting;
/// <summary>
///PrintHelper 的摘要说明
/// </summary>
public class PrintHelper
{
    
public PrintHelper()
    {
    }
    
public static void PrintWebControl(Control ctrl)
    {
        PrintWebControl(ctrl, 
string.Empty);
    }
public static void PrintWebControl(Control ctrl, string Script)
    {
        StringWriter stringWrite 
= new StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite 
= new System.Web.UI.HtmlTextWriter(stringWrite);
        
if (ctrl is WebControl)
        {
            Unit w 
= new Unit(100, UnitType.Percentage); ((WebControl)ctrl).Width = w;
        }
        Page pg 
= new Page();
        pg.EnableEventValidation 
= false;
        
if (Script != string.Empty)
        {
            pg.ClientScript.RegisterStartupScript(pg.GetType(), 
"PrintJavaScript", Script);
        }
        HtmlForm frm 
= new HtmlForm();
        pg.Controls.Add(frm);
        frm.Attributes.Add(
"runat""server");
        frm.Controls.Add(ctrl);
        pg.DesignerInitialize();
        pg.RenderControl(htmlWrite);
        
string strHTML = stringWrite.ToString();
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.Write(strHTML);
        HttpContext.Current.Response.Write(
"<script>window.print();</script>");
        HttpContext.Current.Response.End();
    }
}