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.

276 lines
12 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Data;
  6. using System.Web.UI.WebControls;
  7. using System.ComponentModel;
  8. using System.Data.SqlClient;
  9. using System.Text;
  10. using System.Drawing;
  11. namespace OT.Controls
  12. {
  13. public class OrderCalendar : Calendar
  14. {
  15. DataSet dsOrderList;// = new Infrasys.BLL.OP_OrderDetail().GetOrderListForCarlendarByOrderDateStarAndEnd(strOrderDateStar, strOrderDateEnd);
  16. DataSet dsGoodDays;// = new Infrasys.BLL.MAG_GoodDay().GetList();
  17. protected override void OnLoad(EventArgs e)
  18. {
  19. base.OnLoad(e);
  20. }
  21. private int _MaxLen = 8;
  22. public int MaxLen
  23. {
  24. set
  25. {
  26. _MaxLen = value;
  27. }
  28. get
  29. {
  30. return _MaxLen;
  31. }
  32. }
  33. protected override void OnDayRender(TableCell cell, CalendarDay day)
  34. {
  35. string strOrderDateStar = day.Date.AddDays(1 - day.Date.Day).ToString("yyyy/MM/dd");
  36. if (day.Date.Day > 10)
  37. {
  38. strOrderDateStar = day.Date.AddDays(1 - day.Date.Day).AddMonths(1).ToString("yyyy/MM/dd");
  39. }
  40. string strOrderDateEnd = day.Date.AddDays(1 - day.Date.Day).AddMonths(1).AddDays(-1).ToString("yyyy/MM/dd");
  41. if (day.Date.Day > 10)
  42. {
  43. strOrderDateEnd = day.Date.AddDays(1 - day.Date.Day).AddMonths(2).AddDays(-1).ToString("yyyy/MM/dd");
  44. }
  45. if (dsOrderList == null)
  46. {
  47. // dsOrderList = new OT.BLL.TB_AVA_OP_OrderHeader().GetOrderCarlendarDataByStartAndEndDate(strOrderDateStar, strOrderDateEnd);
  48. }
  49. if (dsGoodDays == null)
  50. {
  51. // dsGoodDays = new OT.BLL.TB_AVA_MAG_GoodDay().GetAllList();
  52. }
  53. //總表格
  54. Table otbAll = new Table();
  55. otbAll.Attributes.Add("height", "100%");
  56. otbAll.Attributes.Add("width", "100%");
  57. otbAll.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
  58. otbAll.BorderWidth = 1;
  59. otbAll.BorderColor = Color.Black;
  60. otbAll.BackColor = Color.White; //ColorTranslator.FromHtml("#C2D5FC");
  61. otbAll.CellPadding = 0;
  62. otbAll.CellSpacing = 0;
  63. //border="1" cellpadding="0" cellspacing="0" bordercolor="#FF9966"
  64. //日期行
  65. TableRow trHeader = new TableRow();
  66. trHeader.BackColor = ColorTranslator.FromHtml("#EBEFF4"); //每行日期的顏色
  67. trHeader.BorderColor = ColorTranslator.FromHtml("#C2D5FC");
  68. trHeader.Height = 10;
  69. //日期行-日期
  70. TableCell otdDay = new TableCell();
  71. Label lblDay = new Label();
  72. lblDay.Text = day.Date.Day.ToString().PadLeft(2, '0');
  73. if (day.IsWeekend)
  74. {
  75. lblDay.ForeColor = System.Drawing.Color.Red;
  76. }
  77. otdDay.Controls.Add(lblDay);
  78. otdDay.HorizontalAlign = HorizontalAlign.Left;
  79. otdDay.BorderColor = ColorTranslator.FromHtml("#CEFFFF");
  80. otdDay.Font.Bold = true;
  81. trHeader.Controls.Add(otdDay);
  82. //日期行-吉日名稱
  83. TableCell otdGoodDay = new TableCell();
  84. otdGoodDay.HorizontalAlign = HorizontalAlign.Center;
  85. otdGoodDay.Attributes.Add("width", "100%");
  86. otdGoodDay.BorderColor = ColorTranslator.FromHtml("#CEFFFF");
  87. trHeader.Controls.Add(otdGoodDay);
  88. if (dsGoodDays != null && dsGoodDays.Tables.Count > 0 && dsGoodDays.Tables[0].Rows.Count > 0)
  89. {
  90. foreach (DataRow dr in dsGoodDays.Tables[0].Rows)
  91. {
  92. if (dr["Memo"].ToString().IndexOf(day.Date.ToString("yyyy/MM/dd")) > -1)
  93. {
  94. Label lblGoodDayName = new Label();
  95. lblGoodDayName.Text = dr["GoodDayValue"].ToString();
  96. lblGoodDayName.BackColor = ColorTranslator.FromHtml(dr["Color"].ToString());
  97. lblGoodDayName.Font.Bold = true;
  98. otdGoodDay.Controls.Add(lblGoodDayName);
  99. }
  100. }
  101. }
  102. Table tbHeader = new Table();
  103. tbHeader.CellPadding = 0;
  104. tbHeader.CellSpacing = 0;
  105. tbHeader.Attributes.Add("width", "100%");
  106. tbHeader.Controls.Add(trHeader);
  107. TableRow otrHeader = new TableRow();
  108. TableCell otdHeader = new TableCell();
  109. otdHeader.VerticalAlign = VerticalAlign.Top;
  110. otdHeader.Controls.Add(tbHeader);
  111. otrHeader.Controls.Add(otdHeader);
  112. otbAll.Controls.Add(otrHeader);
  113. //資料行
  114. TableRow trData = new TableRow();
  115. //訂席日期
  116. TableCell otdData = new TableCell();
  117. //otdData.Height = 120;
  118. otdData.Attributes.Add("height", "100%");
  119. otdData.Attributes.Add("width", "100%");
  120. otdData.VerticalAlign = VerticalAlign.Top;
  121. if (dsOrderList != null && dsOrderList.Tables.Count > 0 && dsOrderList.Tables[0].Rows.Count > 0)
  122. {
  123. DataRow[] aryDataRow = dsOrderList.Tables[0].Select(" Date = '" + day.Date.ToString("yyyy/MM/dd") + "' ");
  124. if (aryDataRow.Length == 0)
  125. {
  126. otdData.BackColor = Color.White;
  127. Table tbEmptyOrderInfo = new Table();
  128. tbEmptyOrderInfo.Attributes.Add("width", "100%");
  129. tbEmptyOrderInfo.Attributes.Add("height", "100%");
  130. //tbEmptyOrderInfo.Height = 120;
  131. tbEmptyOrderInfo.BorderColor = Color.White;
  132. tbEmptyOrderInfo.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
  133. tbEmptyOrderInfo.CellPadding = 0;
  134. tbEmptyOrderInfo.CellSpacing = 0;
  135. tbEmptyOrderInfo.BackColor = Color.White;
  136. TableRow trEmptyOrderInfo = new TableRow();
  137. TableCell tdEmptyOrderInfo = new TableCell();
  138. tdEmptyOrderInfo.Height = 100;
  139. tdEmptyOrderInfo.Attributes.Add("height", "100%");
  140. trEmptyOrderInfo.Controls.Add(tdEmptyOrderInfo);
  141. tbEmptyOrderInfo.Controls.Add(trEmptyOrderInfo);
  142. otdData.Controls.Add(tbEmptyOrderInfo);
  143. }
  144. foreach (DataRow dr in aryDataRow)
  145. {
  146. Table tbData = new Table();
  147. tbData.Attributes.Add("width", "100%");
  148. tbData.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
  149. tbData.CellPadding = 0;
  150. tbData.CellSpacing = 0;
  151. TableRow trOrderDateSE = new TableRow();
  152. TableRow trOrderData = new TableRow();
  153. //訂席開始結束
  154. TableCell tdOrderDateSE = new TableCell();
  155. Label lblOrderDateSE = new Label();
  156. lblOrderDateSE.Text = dr["Date"].ToString();
  157. lblOrderDateSE.CssClass = "CarlendarDate";
  158. tdOrderDateSE.Controls.Add(lblOrderDateSE);
  159. //tdOrderDateSE.ColumnSpan = 3;
  160. tdOrderDateSE.HorizontalAlign = HorizontalAlign.Left;
  161. trOrderDateSE.Controls.Add(tdOrderDateSE);
  162. //資料
  163. //顏色塊 Start
  164. //TableCell tdOrderColor = new TableCell();
  165. //Label lblOrderStatusColor = new Label();
  166. //lblOrderStatusColor.Text = " ";
  167. //lblOrderStatusColor.Width = 10;
  168. //lblOrderStatusColor.Height = 16;
  169. //lblOrderStatusColor.BackColor = ColorTranslator.FromHtml("#F0E68C");
  170. //tdOrderColor.HorizontalAlign = HorizontalAlign.Left;
  171. //tdOrderColor.Controls.Add(lblOrderStatusColor);
  172. //trOrderData.Controls.Add(tdOrderColor);
  173. //顏色塊 End
  174. //圖片塊 Start
  175. //TableCell tdOrderBook = new TableCell();
  176. //System.Web.UI.WebControls.HyperLink hlBook = new System.Web.UI.WebControls.HyperLink();
  177. //hlBook.ImageUrl = "~/App_Themes/Default/Images/book.jpg";
  178. //hlBook.NavigateUrl = "~/Pages/OP/ManageOrderRealValue_Add.aspx?OrderID=" + dr["OrderID"].ToString();
  179. //tdOrderBook.Controls.Add(hlBook);
  180. //tdOrderBook.HorizontalAlign = HorizontalAlign.Left;
  181. //trOrderData.Controls.Add(tdOrderBook);
  182. //圖片塊 End
  183. //內容塊 Start
  184. TableCell tdOrderInfo = new TableCell();
  185. HyperLink hlOrderInfo = new HyperLink();
  186. string strOrderInfo = string.Format("[{0}]{1}", dr["PRENAME"].ToString(), dr["NAME"].ToString());
  187. hlOrderInfo.Text = strOrderInfo.Length <= MaxLen ? strOrderInfo : strOrderInfo.Substring(0, MaxLen) + "...";
  188. hlOrderInfo.ToolTip = strOrderInfo;
  189. if (dr["URL"] != null && !dr["URL"].ToString().Equals(""))
  190. {
  191. hlOrderInfo.NavigateUrl = dr["URL"].ToString();
  192. }
  193. tdOrderInfo.CssClass = "CarlendarA";
  194. tdOrderInfo.Controls.Add(hlOrderInfo);
  195. tdOrderInfo.HorizontalAlign = HorizontalAlign.Left;
  196. trOrderData.Controls.Add(tdOrderInfo);
  197. //內容塊 End
  198. tbData.Controls.Add(trOrderDateSE);
  199. tbData.Controls.Add(trOrderData);
  200. otdData.Controls.Add(tbData);
  201. //otdData.BackColor = ColorTranslator.FromHtml("#FFFFCE");
  202. //cell.BackColor = ColorTranslator.FromHtml("#FFFFCE");
  203. }
  204. }
  205. else
  206. {
  207. otdData.BackColor = Color.White;
  208. Table tbEmptyOrderInfo = new Table();
  209. tbEmptyOrderInfo.Attributes.Add("width", "100%");
  210. //tbEmptyOrderInfo.Height = 120;
  211. tbEmptyOrderInfo.Attributes.Add("height", "100%");
  212. tbEmptyOrderInfo.BorderColor = Color.White;
  213. tbEmptyOrderInfo.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
  214. tbEmptyOrderInfo.CellPadding = 0;
  215. tbEmptyOrderInfo.CellSpacing = 0;
  216. tbEmptyOrderInfo.BackColor = Color.White;
  217. TableRow trEmptyOrderInfo = new TableRow();
  218. TableCell tdEmptyOrderInfo = new TableCell();
  219. //tdEmptyOrderInfo.Height = 100;
  220. tdEmptyOrderInfo.Attributes.Add("height", "100%");
  221. trEmptyOrderInfo.Controls.Add(tdEmptyOrderInfo);
  222. tbEmptyOrderInfo.Controls.Add(trEmptyOrderInfo);
  223. otdData.Controls.Add(tbEmptyOrderInfo);
  224. }
  225. trData.Controls.Add(otdData);
  226. otbAll.Controls.Add(trData);
  227. cell.Controls.Clear();
  228. cell.VerticalAlign = VerticalAlign.Top;
  229. cell.Attributes.Add("height", "100%");
  230. cell.BackColor = Color.White; //ColorTranslator.FromHtml("#C2D5FC");
  231. //非本月不加載資料
  232. if (!day.IsOtherMonth)
  233. {
  234. cell.BorderStyle = System.Web.UI.WebControls.BorderStyle.Dotted;
  235. cell.BorderWidth = 1;
  236. cell.Height = 120;
  237. cell.Controls.Add(otbAll);
  238. }
  239. else
  240. {
  241. cell.BackColor = ColorTranslator.FromHtml("#C2D5FC");
  242. }
  243. //base.OnDayRender(cell, day);
  244. }
  245. }
  246. }