打印我的Gridview我使用了以下事件Button_Print_Click。下面是我的代码:
private void Button_Print_Click(object sender, EventArgs e)
{
GridView1.PagerSettings.Visible = false;
GridView1.DataSource = DataLoad();
GridView1.DataBind();
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.RenderControl(hw);
string gridHTML = sw.ToString().Replace("\"", "'").Replace(System.Environment.NewLine, "");
StringBuilder sb = new StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload = new function(){");
sb.Append("var printWin = window.open('', '', 'left=0");
sb.Append(",top=0,width=1000,height=600,status=0');");
sb.Append("printWin.document.write(\"");
sb.Append(gridHTML);
sb.Append("\");");
sb.Append("printWin.document.close();");
sb.Append("printWin.focus();");
sb.Append("printWin.print();");
sb.Append("printWin.close();};");
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "GridPrint", sb.ToString());
GridView1.DataSource = DataLoad();
GridView1.DataBind();
}
但是通过关注页面,它不会显示css属性。例如,我的GridViewHeader文本字体看起来很简单,但不是粗体!!代码有什么问题吗?为什么我不打印原始的CSS样式页面?
请帮助谢谢。
答案 0 :(得分:0)
问题是你使用window.open()调用弹出窗口,这个弹出窗口打开一个新的HTML页面,即使你在其中注入javascript生成的HMTL,它也没有任何引用你的CSS文件。 尝试在字符串输出中添加一个链接
sb.Append("printWin.document.write(\"");
sb.Append("<link rel='stylesheet' type='text/css' href='...your.css'>")
sb.Append(gridHTML);
请注意,打印html页面真是一种奇怪的方式,我会发现使用@media规则为此生成额外的Print CSS更简单,并在同一页面上调用javascript print():参见例如http://edutechwiki.unige.ch/en/CSS_for_print_tutorial