日期:2014-05-19  浏览次数:20382 次

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>