打印显示数据表格
本文关键字:表格 数据表 数据 显示 打印 | 更新日期: 2023-09-27 18:07:52
打印我的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样式页面打印出来?
请帮忙谢谢。
问题是您正在使用window.open()调用弹出窗口,该弹出窗口打开一个新的HTML页面,即使您在其中注入javascript生成的HTML,它也没有任何对CSS文件的引用。尝试在字符串输出
中添加一个链接sb.Append("printWin.document.write('"");
sb.Append("<link rel='stylesheet' type='text/css' href='...your.css'>")
sb.Append(gridHTML);
请注意,这是一个奇怪的方式来打印一个html页面,我会发现它更简单的生成一个额外的打印CSS使用@media规则,并调用javascript的print()在同一个页面上:例如http://edutechwiki.unige.ch/en/CSS_for_print_tutorial