2012-01-20 42 views
3

我在打印图表时遇到问题。如何使网页特定区域的打印包含图表?

我做了一个网页,包含一些控件和一个图表,使用微软图表控件。这个问题目前正在IE 8和Firefox 9.0.1中影响我。

当我使用JavaScript打印时,它打印包含在div中的所有控件,但图表控件未显示在打印预览页面上这是在同一个div。

+2

它是一种什么样的图表? –

+0

您能更精确地分享印刷图表编码吗?你是否也使用Microsoft Chart Controls或其他第三方制图工具? – Pratik

+0

构建一个仅包含图表的页面,并在页面末尾添加JavaScript print()和close()方法。 – adatapost

回答

3

如果您正在使用Microsoft Chart Controls你可以尝试打印下面的代码:

public 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(); 

} 

呼叫:

PrintWebControl(Panel1); 

让你需要的图表的打印。

+0

但问题在于他试图打印一个嵌入了这种控件的页面。我认为他的问题是为什么它没有出现。 –

+0

** Script **参数的内容是什么? – Amir