/Reports/ViewReport.aspx.cs

http://github.com/khaneh/Orders · C# · 164 lines · 115 code · 24 blank · 25 comment · 10 complexity · bdbe06563ca6b62e63630aabc620000b MD5 · raw file

  1. using System;
  2. using System.Data.SqlClient;
  3. using CrystalDecisions.CrystalReports.Engine;
  4. using CrystalDecisions.Shared;
  5. using CrystalDecisions.Web;
  6. namespace Reports
  7. {
  8. /// <summary>
  9. /// Summary description for GeneralReportWebForm.
  10. /// </summary>
  11. public class GeneralReportWebForm : System.Web.UI.Page
  12. {
  13. protected System.Web.UI.WebControls.Button Button1;
  14. protected System.Web.UI.HtmlControls.HtmlForm Form1;
  15. protected CrystalDecisions.Web.CrystalReportViewer viewer;
  16. protected GeneralReport report = null;
  17. protected ParameterFields parameterFields = new ParameterFields ();
  18. protected int reportLogID=0;
  19. protected int totalPageCount=0;
  20. protected string errors="";
  21. private void Page_Load(object sender, System.EventArgs e)
  22. {
  23. char failed='0';
  24. try
  25. {
  26. reportLogID = Int32.Parse(Request.QueryString.ToString());
  27. }
  28. catch
  29. {
  30. errors+="Invalid ReportNumber\n<br>";
  31. }
  32. string[] strParameterNames=new string[] {};
  33. string[] strParameterValues=new string[] {};
  34. //SqlConnection conn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=sefareshat");
  35. SqlConnection conn = new SqlConnection("data source=localhost;initial catalog=sefareshat;password=5tgb;persist security info=True;user id=sefadmin;workstation id=appserv;packet size=4096");
  36. conn.Open();
  37. SqlCommand sqlCommand = new SqlCommand();
  38. sqlCommand.Connection=conn;
  39. sqlCommand.CommandText="SELECT ReportFileName,ReportParameterNames,ReportParameterValues FROM ReportLog WHERE ID='"+ reportLogID +"' AND Checked=0";
  40. SqlDataReader dr = sqlCommand.ExecuteReader();
  41. if (dr.Read())
  42. {
  43. report=new GeneralReport(dr.GetString(0));
  44. string tmpParameterNames=dr.GetString(1);
  45. string tmpParameterValues=dr.GetString(2);
  46. if(tmpParameterNames!="")
  47. {
  48. strParameterNames=tmpParameterNames.Split((char)1);
  49. strParameterValues=tmpParameterValues.Split((char)1);
  50. }
  51. }
  52. else
  53. {
  54. errors+="No such Report\n<br>";
  55. }
  56. dr.Close();
  57. for (int i=0; i<strParameterNames.Length; i++)
  58. {
  59. ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
  60. ParameterField paramField = new ParameterField ();
  61. paramField.ParameterFieldName = strParameterNames[i];
  62. discreteVal.Value = strParameterValues[i];
  63. paramField.CurrentValues.Add (discreteVal);
  64. parameterFields.Add (paramField);
  65. }
  66. if(! initViewer())
  67. errors+="Cannot Initialize Viewer.\n<br>";
  68. if (errors!="")
  69. {
  70. failed='1';
  71. Response.Write(errors);
  72. }
  73. if(errors.Length>180)
  74. errors = errors.Substring(0,180);
  75. sqlCommand.CommandText="UPDATE ReportLog Set Checked='1',Viewed='1',Failed='"+failed+"',ErrorDescription=N'"+ Util.sqlSafe(errors) +"',PrinterName='Not Printed' WHERE (ID='"+ reportLogID +"')";
  76. sqlCommand.ExecuteNonQuery();
  77. conn.Close();
  78. // if (report!=null) report.Dispose();
  79. if (report!=null)
  80. {
  81. // Response.Write("###+(" + totalPageCount + ") ###");
  82. if (totalPageCount<2)
  83. report.Dispose();
  84. }
  85. if (errors!="")
  86. Response.End();
  87. }
  88. private bool initViewer()
  89. {
  90. bool success=true;
  91. try
  92. {
  93. viewer.ReportSource = report;
  94. for (int i=0; i<report.DataDefinition.ParameterFields.Count; i++)
  95. {
  96. report.DataDefinition.ParameterFields[i].ApplyCurrentValues(parameterFields[i].CurrentValues);
  97. }
  98. viewer.RefreshReport();
  99. CrystalDecisions.Shared.ReportPageRequestContext reqContext = (CrystalDecisions.Shared.ReportPageRequestContext) viewer.RequestContext;
  100. totalPageCount = report.FormatEngine.GetLastPageNumber(reqContext);
  101. /*
  102. * Another way wich also works:
  103. *
  104. for (int i=0; i<report.DataDefinition.ParameterFields.Count; i++)
  105. {
  106. report.DataDefinition.ParameterFields[i].CurrentValues.Add (parameterDiscreteValues[i]);
  107. }
  108. CrystalReportViewer1.ReportSource = (ReportClass) report;
  109. CrystalReportViewer1.ParameterFieldInfo = parameterFields;
  110. CrystalReportViewer1.RefreshReport();
  111. */
  112. }
  113. catch (Exception e)
  114. {
  115. // errors += e.ToString()+"\n<br><br>";
  116. success=false;
  117. }
  118. return success;
  119. }
  120. #region Web Form Designer generated code
  121. override protected void OnInit(EventArgs e)
  122. {
  123. //
  124. // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  125. //
  126. InitializeComponent();
  127. base.OnInit(e);
  128. DataBind();
  129. }
  130. /// <summary>
  131. /// Required method for Designer support - do not modify
  132. /// the contents of this method with the code editor.
  133. /// </summary>
  134. private void InitializeComponent()
  135. {
  136. this.Load += new System.EventHandler(this.Page_Load);
  137. }
  138. #endregion
  139. }
  140. }