Print.aspx.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Data;
  8. using System.Data.OleDb;
  9. public partial class Print : System.Web.UI.Page
  10. {
  11. LYS.UserData1 myud = new LYS.UserData1();
  12. protected void Page_Load(object sender, EventArgs e)
  13. {
  14. //用Session保存当前页
  15. //if (Session["Username"] == null)
  16. //{ Response.Redirect("LoginNew.aspx"); }
  17. string myURL = myud.GetAddressUrl().ToString();
  18. if (myURL.LastIndexOf("ID") < 0)
  19. {
  20. Response.Write("<script>alert('错误!参数不正确!不能正常显示')</script>");
  21. Response.End();
  22. }
  23. int ID = Convert.ToInt16(Request.QueryString["ID"].ToString());
  24. if (!IsPostBack)
  25. {
  26. ZJ.Text =myud.GetFieldValueFromFieldName("听课日期", ID, "TKJL").ToString();
  27. ZJ1.Text = ZJ.Text;
  28. ZJ2.Text = ZJ.Text;
  29. DDXM.Text = myud.GetFieldValueFromFieldName("督导姓名", ID, "TKJL").ToString();
  30. DDXM1.Text = DDXM.Text;
  31. DDXM2.Text = DDXM.Text;
  32. DD.Text = myud.GetFieldValueFromFieldName("上课地点", ID, "TKJL").ToString();
  33. // DDXM1.Text = myud.GetFieldValue(4, ID, "TKJL").ToString();
  34. // DDXM2.Text = myud.GetFieldValue(4, ID, "TKJL").ToString();
  35. // DDXM4.Text = myud.GetFieldValue(4, ID, "TKJL").ToString();
  36. JSXM.Text = myud.GetFieldValueFromFieldName("教师姓名", ID, "TKJL").ToString();
  37. XB.Text = myud.GetFieldValueFromFieldName("系部", ID, "TKJL").ToString();
  38. KM.Text = myud.GetFieldValueFromFieldName("课程名", ID, "TKJL").ToString();
  39. BJ.Text = myud.GetFieldValueFromFieldName("班级", ID, "TKJL").ToString();
  40. XQ.Text = myud.GetFieldValueFromFieldName("星期", ID, "TKJL").ToString();
  41. JC.Text = myud.GetFieldValueFromFieldName("节次", ID, "TKJL").ToString();
  42. PF.Text = myud.GetFieldValueFromFieldName("总评分", ID, "TKJL").ToString();
  43. PJ.Text = myud.GetFieldValueFromFieldName("点评评价", ID, "TKJL").ToString();
  44. }
  45. }
  46. protected void Button1_Click(object sender, EventArgs e)
  47. {
  48. }
  49. protected void Button2_Click(object sender, EventArgs e)
  50. {
  51. }
  52. protected void Button3_Click(object sender, EventArgs e)
  53. {
  54. // ASP.NET实现将网页内容输出到WORD并下载到本地
  55. // 个人觉得要实现这个功能如果没有类库提供的几个关键函数,还是比较繁琐的。所以首先介绍几个将要在代码中使用的关键函数和参数,然后再说函数实现、注意问题等。
  56. // 关键函数:
  57. // 1.函数原型:Response.AppendHeader(name,value);
  58. // 本例中使用: Response.AppendHeader("Content-Disposition", "attachment;filename=fileDown.doc");
  59. // 说明:将http头添加到输出流,name 为Http头,value为Http头的值,可以实现刷新页面,页面跳转,文件下载等,就看你name的值是什么。例如在本例中使用name为Content-Disposition:
  60. // Content-Disposition:是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。当 Internet Explorer 接收到头时,它会激活浏览器文 件下载对话框,它的文件名框自动填充了头中指定的文件名,来确保浏览器弹出下载对话框。
  61. //在本例中value的值为attachment;filename=fileDown.doc:
  62. // attachment: attachment 参数表示作为附件下载,您可以改成 online在线打开 ,filename自定义下载的文件名称,文件后缀为想要下载的文件类型,后面有说明。
  63. // 2.Response.ContentType
  64. // 本例中设置:Response.ContentType = "application/ms-word";
  65. // 说明:指定文件类型 可以为application/ms-excel , application/ms-word,application/ms-txt,application/ms-html或其他浏览器可直接支持文档。
  66. // 3.System.Web.UI.HtmlTextWriter类
  67. // 说明:将标记字符和文本写入到 ASP.NET 服务器控件输出流,也就是用于把HTML内容输出到服务器控件输出流的一个类。在本例中是将要下载的页面内容输出到一个StringWriter对象中。
  68. // 4.RenderControl(HtmlWriter);
  69. // 说明:将服务器控件的内容输出到所提供的HtmlWriter对象中,在本例中是将要下载的页面内容输出到HtmlWriter中。
  70. // 注意:在本例中需要将页面的EnableEventValidation="false",<pages enableEventValidation="false"/>不然会执行出错。
  71. // 实现思想:
  72. // 第一步:设置Response的格式,缓冲,编码等,调用AppendHeader函数用于弹出浏览器保存文件对话框,并设置文件名字、类型以及保存方式(在线浏览还是作为附件保存)。
  73. // 第二步:初始化HtmlWriter,将下载页面内容输出给HtmlWriter,并将内容输出到一个StringWriter对象中。
  74. // 第三步:将StringWriter对象的值赋值给一个string对象,然后操作字符串对象,截取想要下载的内容。
  75. // 第四步:调用Response.Write将string对象输出到第一步指定的文件中。
  76. //注意:在本例中需要将页面的EnableEventValidation="false",<pages enableEventValidation="false"/>不然会执行出错。
  77. //设置Http的头信息,编码格式
  78. HttpContext.Current.Response.Buffer = true;
  79. HttpContext.Current.Response.Clear();
  80. HttpContext.Current.Response.Charset = "gb2312";
  81. HttpContext.Current.Response.ClearContent();
  82. HttpContext.Current.Response.ClearHeaders();
  83. Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
  84. HttpContext.Current.Response.ContentType = "application/ms-word";
  85. HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=fileDown.doc");
  86. //关闭控件的视图状态 ,如果仍然为true,RenderControl将启用页的跟踪功能,存储与控件有关的跟踪信息
  87. this.EnableViewState = false;
  88. //将要下载的页面输出到HtmlWriter
  89. System.IO.StringWriter writer = new System.IO.StringWriter();
  90. System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
  91. this.RenderControl(htmlWriter);
  92. //提取要输出的内容
  93. string pageHtml = writer.ToString();
  94. int startIndex = pageHtml.IndexOf("<div style=\"margin: 0 auto;\" id=\"mainContent\">");
  95. int endIndex = pageHtml.LastIndexOf("</div>");
  96. int lenth = endIndex - startIndex;
  97. pageHtml = pageHtml.Substring(startIndex, lenth);
  98. //输出
  99. HttpContext.Current.Response.Write(pageHtml.ToString());
  100. HttpContext.Current.Response.End();
  101. }
  102. }