StaffReport.aspx.cs
上传用户:cha0314
上传日期:2014-03-02
资源大小:12522k
文件大小:6k
源码类别:

C#编程

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Drawing;
  7. using System.Web;
  8. using System.Web.SessionState;
  9. using System.Web.UI;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.HtmlControls;
  12. namespace UDS.SubModule.Staff.Report
  13. {
  14. /// <summary>
  15. /// StaffReport 的摘要说明。
  16. /// </summary>
  17. public class StaffReport : System.Web.UI.Page
  18. {
  19. protected CrystalDecisions.Web.CrystalReportViewer crv_StaffList;
  20. protected System.Web.UI.WebControls.Button btn_Change;
  21. protected System.Web.UI.WebControls.DropDownList ddl_FileFormat;
  22. protected System.Web.UI.WebControls.LinkButton lbtn_IEPrint;
  23. private StaffDataSet ds;
  24. private StaffList stafflistreport;
  25. private string staffname,mobile,gender,email,bound;
  26. private int positionid;
  27. private string[] displayfields;
  28. private void Page_Load(object sender, System.EventArgs e)
  29. {
  30. ds = new StaffDataSet();
  31. DataTable dt =(DataTable)Cache["StaffList"];
  32. if(!Page.IsPostBack)
  33. {
  34. staffname = Session["staffname"].ToString();
  35. positionid = Int32.Parse(Session["positionid"].ToString());
  36. mobile = Session["mobile"].ToString();
  37. email = Session["email"].ToString();
  38. gender = Session["gender"].ToString();
  39. bound = Session["bound"].ToString();
  40. displayfields = (string[])Session["displayfieldsname"];
  41. ViewState["staffname"] = staffname;
  42. ViewState["positionid"] = positionid.ToString();
  43. ViewState["mobile"] = mobile.ToString();
  44. ViewState["email"] = email.ToString();
  45. ViewState["gender"] = gender.ToString();
  46. ViewState["bound"] = bound.ToString();
  47. ViewState["displayfields"] = displayfields;
  48. Session["staffname"] = null;
  49. Session["positionid"] = null;
  50. Session["mobile"] = null;
  51. Session["gender"] = null;
  52. Session["displayfieldsname"] = null;
  53. Session["bound"] = null;
  54. }
  55. else
  56. {
  57. staffname = ViewState["staffname"].ToString();
  58. positionid = Int32.Parse(ViewState["positionid"].ToString());
  59. mobile = ViewState["mobile"].ToString();
  60. email = ViewState["email"].ToString();
  61. gender = ViewState["gender"].ToString();
  62. bound = ViewState["bound"].ToString();
  63. displayfields = (string[])ViewState["displayfields"];
  64. }
  65. if(dt==null)
  66. {
  67. //得不到缓存的内容,重新获取
  68. SqlDataReader dr;
  69. UDS.Components.Staff staff = new UDS.Components.Staff();
  70. dr = staff.Find(staffname,positionid,mobile,email,gender,bound);
  71. dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
  72. Cache["StaffList"] = dt;
  73. }
  74. //添加datatable中的数据
  75. foreach(DataRow row in dt.Rows)
  76. {
  77. DataRow staffviewrow = ds.StaffView.NewRow();
  78. staffviewrow["Staff_Name"] = row["Staff_Name"].ToString();
  79. staffviewrow["RealName"] = row["RealName"].ToString();
  80. staffviewrow["Mobile"] = row["Mobile"].ToString();
  81. staffviewrow["SexName"] = row["SexName"].ToString();
  82. staffviewrow["Email"] = row["Email"].ToString();
  83. staffviewrow["Position_Name"] = row["Position_Name"].ToString();
  84. ds.StaffView.AddStaffViewRow((StaffDataSet.StaffViewRow)staffviewrow);
  85. }
  86. stafflistreport = new StaffList();
  87. stafflistreport.SetDataSource(ds);
  88. crv_StaffList.ReportSource = stafflistreport;
  89. //根据用户选择隐藏字段
  90. foreach(string fieldname in displayfields)
  91. {
  92. stafflistreport.ReportDefinition.ReportObjects["ttl"+fieldname].ObjectFormat.EnableSuppress = false;
  93. stafflistreport.ReportDefinition.ReportObjects[fieldname].ObjectFormat.EnableSuppress = false;
  94. }
  95. crv_StaffList.DataBind();
  96. }
  97. #region Web 窗体设计器生成的代码
  98. override protected void OnInit(EventArgs e)
  99. {
  100. //
  101. // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  102. //
  103. InitializeComponent();
  104. base.OnInit(e);
  105. }
  106. /// <summary>
  107. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  108. /// 此方法的内容。
  109. /// </summary>
  110. private void InitializeComponent()
  111. {    
  112. this.lbtn_IEPrint.Click += new System.EventHandler(this.lbtn_IEPrint_Click);
  113. this.ddl_FileFormat.SelectedIndexChanged += new System.EventHandler(this.ddl_FileFormat_SelectedIndexChanged);
  114. this.btn_Change.Click += new System.EventHandler(this.btn_Change_Click);
  115. this.Load += new System.EventHandler(this.Page_Load);
  116. }
  117. #endregion
  118. private void btn_Change_Click(object sender, System.EventArgs e)
  119. {
  120. string filetype = "";
  121. filetype = ddl_FileFormat.SelectedValue;
  122. string contenttype = "";
  123. string myfilename = Request.MapPath(".")+"\ReportExportFile\"+Session.SessionID+"."+filetype;
  124. CrystalDecisions.Shared.DiskFileDestinationOptions mydiskfiledestinationoptions = new CrystalDecisions.Shared.DiskFileDestinationOptions();
  125. mydiskfiledestinationoptions.DiskFileName = myfilename;
  126. CrystalDecisions.Shared.ExportOptions myExportOptions = stafflistreport.ExportOptions;
  127. myExportOptions.DestinationOptions = mydiskfiledestinationoptions;
  128. myExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
  129. switch(ddl_FileFormat.SelectedItem.Value)
  130. {
  131. case "pdf":
  132. contenttype = "application/pdf";
  133. myExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;
  134. break;
  135. case "doc":
  136. contenttype = "application/msword";
  137. myExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.WordForWindows;
  138. break;
  139. }
  140. stafflistreport.Export();
  141. Response.ClearContent();
  142. Response.ClearHeaders();
  143. Response.ContentType = contenttype;
  144. Response.WriteFile(myfilename);
  145. Response.Flush();
  146. Response.Close();
  147. System.IO.File.Delete(myfilename);
  148. }
  149. private void lbtn_IEPrint_Click(object sender, System.EventArgs e)
  150. {
  151. if(lbtn_IEPrint.Text == "IE打印预览")
  152. {
  153. crv_StaffList.SeparatePages = false;
  154. crv_StaffList.DisplayToolbar = false;
  155. lbtn_IEPrint.Text = "取消IE打印预览";
  156. }
  157. else
  158. {
  159. crv_StaffList.SeparatePages = true;
  160. crv_StaffList.DisplayToolbar = true;
  161. lbtn_IEPrint.Text = "IE打印预览";
  162. }
  163. }
  164. private void ddl_FileFormat_SelectedIndexChanged(object sender, System.EventArgs e)
  165. {
  166. }
  167. }
  168. }