You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
4.4 KiB

  1. using Swift.DAL.SwiftDAL;
  2. using Swift.web.Component.Grid;
  3. using Swift.web.Component.Grid.gridHelper;
  4. using Swift.web.Library;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Text;
  9. namespace Swift.web
  10. {
  11. public partial class DownloadPDF : System.Web.UI.Page
  12. {
  13. private SwiftDao dao = new SwiftDao();
  14. protected void Page_Load(object sender, EventArgs e)
  15. {
  16. if (GetStatic.ReadQueryString("mode", "") == "")
  17. {
  18. getPdfDownload();
  19. }
  20. }
  21. private void getPdfDownload()
  22. {
  23. var data = "";
  24. var mode = GetStatic.ReadQueryString("mode", "grid").ToLower();
  25. if (mode == "grid")
  26. {
  27. data = GeneratePDFForGrid();
  28. }
  29. content.InnerHtml = data.ToString();
  30. //GetStatic.CallJSFunction(Page, "GetPDF()");
  31. // GetPdfDownloadDone(data);
  32. }
  33. //private void GetPdfDownloadDone(string data)
  34. //{
  35. // // instantiate a html to pdf converter object
  36. // HtmlToPdf converter = new HtmlToPdf();
  37. // //// set converter options converter.Options.PdfPageSize = PdfPageSize.A4;
  38. // converter.Options.PdfPageOrientation = PdfPageOrientation.Landscape;
  39. // converter.Options.WebPageWidth = 1024; converter.Options.WebPageHeight = 0;
  40. // //// create a new pdf document converting an url PdfDocument doc = converter.ConvertHtmlString(data);
  41. // //// save pdf document doc.Save(Response, true, "Sample.pdf");
  42. // //// close pdf document
  43. // doc.Close();
  44. //}
  45. private string GeneratePDFForGrid()
  46. {
  47. var sql = GetStatic.ReadSession("exportSource", "");
  48. if (string.IsNullOrEmpty(sql))
  49. return "";
  50. var ds = dao.ExecuteDataset(sql);
  51. var columnList = (List<GridColumn>)Session["grid_column"];
  52. if (ds == null || columnList == null)
  53. return "";
  54. var dt = ds.Tables[1];
  55. var html = new StringBuilder("<table width=\"100%\" style=\"border:1px solid #ddd; border-collapse:collapse;\" cellpadding=\"0\" cellspacing=\"1\" id=\"gridTable\" >");
  56. html.Append("<tr>");
  57. foreach (var column in columnList)
  58. {
  59. if (column.Description != "")
  60. html.Append("<th style=\"border:1px solid #ddd; border-collapse:collapse;\" Class=\"HeaderStyle\" align=\"left\" nowrap " + ">" + column.Description + "</th>");
  61. }
  62. html.Append("</tr>");
  63. foreach (DataRow dr in dt.Rows)
  64. {
  65. html.Append("<tr>");
  66. foreach (var column in columnList)
  67. {
  68. switch (column.Type.ToUpper())
  69. {
  70. case "M":
  71. html.Append("<td style=\"border:1px solid #ddd; border-collapse:collapse;\" align=\"right\" nowrap>" + SwiftGrid.FormatData(dr[column.Key].ToString(), "M") + "</td>");
  72. break;
  73. case "D":
  74. html.Append("<td style=\"border:1px solid #ddd; border-collapse:collapse;\" align=\"center\" nowrap>" + SwiftGrid.FormatData(dr[column.Key].ToString(), "D") + "</td>");
  75. break;
  76. case "DT":
  77. html.Append("<td style=\"border:1px solid #ddd; border-collapse:collapse;\" align=\"center\" nowrap>" + SwiftGrid.FormatData(dr[column.Key].ToString(), "DT") + "</td>");
  78. break;
  79. case "NOSORT":
  80. if (column.Description.Trim() != "")
  81. html.Append("<td style=\"border:1px solid #ddd; border-collapse:collapse;\" align=\"left\" nowrap>" + dr[column.Key] + "</td>");
  82. break;
  83. case "CHECKBOX":
  84. break;
  85. default:
  86. html.Append("<td style=\"border:1px solid #ddd; border-collapse:collapse;\" align=\"left\" nowrap>" + dr[column.Key] + "</td>");
  87. break;
  88. }
  89. }
  90. html.Append("</tr>");
  91. }
  92. html.Append("</table>");
  93. return html.ToString();
  94. }
  95. }
  96. }