GridView或DataList嵌套打印的问题(讨论)
不想使用CrystalReports打印,想利用web打印(当然不是直接使用IE6的打印功能),因为我的页面需要按要求打印全部或打印部份。
以前在ASP年代是使用document.all.WebBrowser.ExecWB(6,1)等来控制,难道到了vs 2005还要这样使用吗?我需要有页面设置、打印预览和直接打印即可。
另外尽管不能或不是很完善的进行WEB打印,我也想知道如何把GridView或DataList嵌套的表格数据导出成pdf或excel?
我曾在csdn上搜索过相关打印才提出来的,因为在历史贴子里仍然没有比较好的解决方案。谢谢大家了。
还有另外如果有免费的打印控制也请附上(如果好用的话)谢谢了。
------解决方案--------------------不用第三方控件的话,只能用ie控件了。或者直接让用户在ie菜单中设置。
导出pdf的网上应该很多,这里没有现成的。
导出excel
public static void ExportExcel(GridView rp, string strFileName)
{
strFileName = System.Web.HttpUtility.UrlEncode(strFileName,System.Text.Encoding.UTF8);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Buffer = true;
System.Web.HttpContext.Current.Response.Charset = "gb2312 ";
System.Web.HttpContext.Current.Response.AppendHeader( "Content-Disposition ", "online; filename= " + strFileName + ".xls ");
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding( "gb2312 ");
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel ";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo( "zh-CN ",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
rp.RenderControl(oHtmlTextWriter);
rp = null;
System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString().Replace( " <td ", " <td STYLE= 'MSO-NUMBER-FORMAT:\\@ ' "));
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.End();
}
------解决方案-------------------- this.DataGrid1.AllowPaging = false;//取消分页 分页打印的话后面的东西出不来
DB();//绑定的方法
Response.ContentType = "application/vnd.ms-excel ";
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
DataGrid1.RenderControl(hw);
Response.Write(sw.ToString());
Response.End();
------解决方案--------------------下面这段代码先把“打印”和“返回”两个按钮隐藏,然后打印页面,然后再把按钮显示出来。
<script language= "javascript ">
function PrintPage()
{
webForm.btnPrint.style.visibility = "hidden ";
webForm.btnReturn.style.visibility = "hidden ";
window.print(); // 打印
webForm.btnPrint.style.visibility = "visible ";
webForm.btnReturn.style.visibility = "visible ";
}
</script>