打印显示数据表格

本文关键字:表格 数据表 数据 显示 打印 | 更新日期: 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