TrendChartItemInfo.aspx.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Web;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using CB.Data;
  9. using CB.Entity;
  10. using CB.Framework;
  11. using CB.Common;
  12. using CB.TrendChart;
  13. using CB.TrendChart.LotteryTrendChart;
  14. namespace CB.Admin.Plugins.TrendChartConfig
  15. {
  16. public partial class TrendChartItemInfo : AdminPage
  17. {
  18. protected int chartId, Cid;
  19. protected string trendName = string.Empty, Action = string.Empty;
  20. List<ChartFunction> Attributelist = new List<ChartFunction>(); //方法
  21. IList<ChartCssConfigInfo> cssList = ChartCssConfigService.ToList(); //样式
  22. protected void Page_Load(object sender, EventArgs e)
  23. {
  24. chartId = WRequest.GetQueryInt("Id");
  25. Action = WRequest.GetQueryString("Action");
  26. Cid = WRequest.GetQueryInt("Cid");
  27. trendName = TrendChartService.Get(chartId).Name;
  28. BindList<MultiValueFunction>();
  29. BindList<SingleValueFunction>();
  30. BindList<SpecialValueFunction>();
  31. if (!Page.IsPostBack)
  32. {
  33. InitData();
  34. }
  35. }
  36. protected override void InitData()
  37. {
  38. #region dlFuntionType列表绑定
  39. //dpFuntionType.Items.Clear();
  40. for (int i = 0; i < Attributelist.Count; i++)
  41. {
  42. dpFuntionType.Items.Add(new ListItem(Attributelist[i].Name + "_" + ((int)Attributelist[i].ItemType).ToString(), ((int)Attributelist[i].ItemType).ToString()));
  43. }
  44. if (null != cssList)
  45. for (int i = 0; i < cssList.Count; i++)
  46. {
  47. if (cssList[i].ParentId == 0 || cssList[i].ParentId == -1) //不加载单独的子样式
  48. {
  49. dpChartCssId.Items.Add(new ListItem(cssList[i].Name, cssList[i].Id.ToString()));
  50. }
  51. }
  52. #endregion
  53. BindRepeaterList();
  54. }
  55. protected override void BindRepeaterList()
  56. {
  57. repeaterList.DataSource = null;
  58. var list = CB.Data.TrendChartItemService.ToList(new Entity.TrendChartItemInfo() { ChartId = chartId });
  59. repeaterList.DataSource = list;
  60. repeaterList.DataBind();
  61. }
  62. protected void repeaterList_ItemCommand(object source, RepeaterCommandEventArgs e)
  63. {
  64. if ("moveUp" == e.CommandName)
  65. {
  66. var list = CB.Data.TrendChartItemService.ToList(new Entity.TrendChartItemInfo() { ChartId = chartId });
  67. if (list == null || list.Count == 0)
  68. return;
  69. for (int i = list.Count - 1; i >= 0; i--)
  70. {
  71. if (list[i].Id == TypeConverter.ObjectToInt(e.CommandArgument))
  72. {
  73. if (i > 0)
  74. {
  75. list[i].OrderBy = list[i].OrderBy - 1;
  76. if (CB.Data.TrendChartItemService.Update(list[i]))
  77. {
  78. list[i - 1].OrderBy = list[i - 1].OrderBy + 1;
  79. if (TrendChartItemService.Update(list[i - 1]))
  80. {
  81. ChangeState(TrendChartStatus.Test, chartId);
  82. Logs("上移走势图项配置", string.Format("上移走势图项配置[ID={0}]", e.CommandArgument));
  83. }
  84. }
  85. }
  86. else
  87. {
  88. return;
  89. }
  90. }
  91. }
  92. }
  93. if ("moveDown" == e.CommandName)
  94. {
  95. var list = CB.Data.TrendChartItemService.ToList(new Entity.TrendChartItemInfo() { ChartId = chartId });
  96. if (list == null || list.Count == 0)
  97. return;
  98. for (int i = list.Count - 1; i >= 0; i--)
  99. {
  100. if (list[i].Id == TypeConverter.ObjectToInt(e.CommandArgument))
  101. {
  102. if (i < list.Count - 1)
  103. {
  104. if (list[i].Id == TypeConverter.ObjectToInt(e.CommandArgument))
  105. {
  106. list[i].OrderBy = list[i].OrderBy + 1;
  107. if (CB.Data.TrendChartItemService.Update(list[i]))
  108. {
  109. list[i + 1].OrderBy = list[i + 1].OrderBy - 1;
  110. if (TrendChartItemService.Update(list[i + 1]))
  111. {
  112. ChangeState(TrendChartStatus.Test, chartId);
  113. Logs("下移走势图项配置", string.Format("下移走势图项配置[ID={0}]", e.CommandArgument));
  114. }
  115. }
  116. }
  117. }
  118. else
  119. {
  120. return;
  121. }
  122. }
  123. }
  124. }
  125. if ("dndel" == e.CommandName)
  126. {
  127. CB.Data.TrendChartItemService.Delete(TypeConverter.ObjectToInt(e.CommandArgument));
  128. ChangeState(TrendChartStatus.Test, chartId);
  129. Logs("删除走势图项配置", string.Format("删除走势图项配置[ID={0}]", e.CommandArgument));
  130. }
  131. if ("edit" == e.CommandName)
  132. {
  133. labID.Text = TypeConverter.ObjectToInt(e.CommandArgument).ToString();
  134. Entity.TrendChartItemInfo Entity = CB.Data.TrendChartItemService.Get(TypeConverter.ObjectToInt(e.CommandArgument));
  135. if (null == Entity)
  136. return;
  137. txtChartItemName.Text = Entity.ChartItemName;
  138. txtCycle.Text = Entity.Cycle.ToString();
  139. txtItemMinValue.Text = Entity.ItemMinValue.ToString();
  140. txtItemMaxValue.Text = Entity.ItemMaxValue.ToString();
  141. txtSplitNumberOfDX.Text = Entity.SplitNumberOfDX.ToString();
  142. txtItemCount.Text = Entity.ItemCount.ToString();
  143. txtItemString.Text = string.Join(",", Entity.ItemString);
  144. txtIndexStart.Text = Entity.IndexStart.ToString();
  145. txtIndexEnd.Text = Entity.IndexEnd.ToString();
  146. dpDrawLine.SelectedValue = Entity.DrawLine ? "1" : "0";
  147. ListItem chartli = ddlTrendChartType.Items.FindByValue(((int)Entity.ChartType).ToString());
  148. if (chartli != null)
  149. {
  150. ddlTrendChartType.ClearSelection();
  151. chartli.Selected = true;
  152. }
  153. for (int i = 0; i < Attributelist.Count; i++)
  154. {
  155. if (Attributelist[i].ItemType == Entity.FuntionType)
  156. {
  157. dpFuntionType.SelectedValue = ((int)Entity.FuntionType).ToString();
  158. break;
  159. }
  160. }
  161. try
  162. {
  163. dpChartCssId.Items.Clear();
  164. ListItem li = new ListItem();
  165. li.Text = "==请选择==";
  166. li.Value = "-1";
  167. dpChartCssId.Items.Add(li);
  168. if (null != cssList)
  169. for (int i = 0; i < cssList.Count; i++)
  170. {
  171. if (cssList[i].ParentId == 0 || cssList[i].ParentId == -1) //不加载单独的子样式
  172. {
  173. if (dpFuntionType.SelectedValue == cssList[i].FuntionTypeCss.ToString())
  174. {
  175. dpChartCssId.Items.Add(new ListItem(cssList[i].Name, cssList[i].Id.ToString()));
  176. }
  177. }
  178. }
  179. dpChartCssId.SelectedValue = Entity.ChartCssId.ToString();
  180. }
  181. catch
  182. {
  183. dpChartCssId.SelectedValue = "-1";
  184. }
  185. txtOrderBy.Text = Entity.OrderBy.ToString();
  186. }
  187. BindRepeaterList();
  188. }
  189. public string GetChartName(int chartid)
  190. {
  191. var entity = CB.Data.TrendChartService.Get(chartid);
  192. return null != entity ? entity.Name : "";
  193. }
  194. //修改或者保存
  195. protected void btnEdit_Click(object sender, EventArgs e)
  196. {
  197. CB.Entity.TrendChartItemInfo Entity = new CB.Entity.TrendChartItemInfo();
  198. Entity.ChartId = chartId;
  199. Entity.ChartType = TypeConverter.StringToEnum<TrendChartType>(ddlTrendChartType.SelectedValue);
  200. Entity.ChartItemName = txtChartItemName.Text;
  201. Entity.Cycle = txtCycle.Text.ToInt();
  202. Entity.ItemMinValue = txtItemMinValue.Text.ToInt();
  203. Entity.ItemMaxValue = txtItemMaxValue.Text.ToInt();
  204. Entity.SplitNumberOfDX = txtSplitNumberOfDX.Text.ToInt();
  205. Entity.ItemCount = txtItemCount.Text.ToInt();
  206. Entity.ItemString = txtItemString.Text.TrimEnd(',').Split(',');
  207. Entity.IndexStart = txtIndexStart.Text.ToInt();
  208. Entity.IndexEnd = txtIndexEnd.Text.ToInt();
  209. Entity.DrawLine = dpDrawLine.SelectedValue == "1" ? true : false;
  210. for (int i = 0; i < Attributelist.Count; i++)
  211. {
  212. if (((int)Attributelist[i].ItemType).ToString() == dpFuntionType.SelectedValue)
  213. {
  214. Entity.FuntionType = Attributelist[i].ItemType;
  215. Entity.ClassName = Attributelist[i].ClassName;
  216. break;
  217. }
  218. }
  219. Entity.ChartCssId = dpChartCssId.SelectedValue.ToInt();
  220. Entity.OrderBy = txtOrderBy.Text.ToInt();
  221. Tuple<bool, string> validate = Validate(Entity);
  222. Entity.TrendChartInfo model = CB.Data.TrendChartService.Get(chartId);
  223. if (null != model)
  224. model.Status = TrendChartStatus.Test;
  225. if (validate.Item1) //通过验证
  226. {
  227. if (labID.Text != "") //修改
  228. {
  229. Entity.Id = labID.Text.ToInt();
  230. if (TrendChartItemService.Update(Entity))
  231. {
  232. if (TrendChartService.Update(model))
  233. {
  234. ClearPage();
  235. ChangeState(TrendChartStatus.Test, chartId);
  236. Logs("修改走势图项配置", string.Format("修改走势图项配置[ID={0}]", Entity.Id));
  237. ShowMessageBox("提示:修改成功!", string.Format("TrendChartItemInfo.aspx?Cid={0}&Id={1}&Action={2}&authPage={3}", Cid, chartId, Action, authPage));
  238. }
  239. }
  240. labID.Text = "";
  241. }
  242. else //新增
  243. {
  244. if (TrendChartItemService.Save(Entity))
  245. {
  246. if (TrendChartService.Update(model))
  247. {
  248. ClearPage();
  249. ChangeState(TrendChartStatus.Test, chartId);
  250. Logs("新增走势图项配置", string.Format("新增走势图项配置[Name={0}]", Entity.ChartItemName));
  251. ShowMessageBox("提示:新增成功!", string.Format("TrendChartItemInfo.aspx?Cid={0}&Id={1}&Action={2}&authPage={3}", Cid, chartId, Action, authPage));
  252. }
  253. }
  254. }
  255. }
  256. else
  257. {
  258. Response.Write(string.Format("<script>alert('{0}');window.opener.location.href=window.opener.location.href;</script>", validate.Item2));
  259. }
  260. BindRepeaterList();
  261. }
  262. //数据验证
  263. public Tuple<bool, string> Validate(Entity.TrendChartItemInfo Entity)
  264. {
  265. if (txtChartItemName.Text.Trim().Trim() == "" || txtChartItemName.Text.Trim().Trim() == "" || txtCycle.Text.Trim().Trim() == "" || txtItemMinValue.Text.Trim() == "" || txtItemMaxValue.Text.Trim() == "" || txtSplitNumberOfDX.Text.Trim() == "" || txtItemCount.Text.Trim() == "" || txtItemString.Text.Trim() == "" || txtIndexStart.Text.Trim() == "" || txtIndexEnd.Text.Trim() == "" || dpDrawLine.SelectedValue == "-1" || dpFuntionType.SelectedValue == "-1" || dpChartCssId.SelectedValue == "-1" || txtOrderBy.Text.Trim() == "" || ddlTrendChartType.SelectedValue == "")
  266. return new Tuple<bool, string>(false, "请检查是否填完数据(所有项都必须填写值)!");
  267. txtItemString.Text = "";
  268. txtIndexStart.Text = "-1";
  269. txtIndexEnd.Text = "-1";
  270. dpDrawLine.SelectedValue = "-1";
  271. dpFuntionType.SelectedValue = "-1";
  272. dpChartCssId.SelectedValue = "-1";
  273. txtOrderBy.Text = "";
  274. if (Entity.ItemString.Length != Entity.ItemCount)
  275. return new Tuple<bool, string>(false, "配置项个数不等于项长度!");
  276. if (Entity.ItemMinValue != -1 || Entity.ItemMaxValue != -1)
  277. if (Entity.ItemMaxValue < Entity.ItemMinValue)
  278. return new Tuple<bool, string>(false, "项的最大值小于最小值!");
  279. //else if ((Entity.ItemMaxValue - Entity.ItemMinValue + 1) != Entity.ItemCount)
  280. // return new Tuple<bool, string>(false, "配置项最大值和最小值之间个数不等于项长度!");
  281. else if (Entity.SplitNumberOfDX != -1)
  282. if (Entity.ItemMaxValue < Entity.SplitNumberOfDX && Entity.SplitNumberOfDX > Entity.ItemMinValue)
  283. return new Tuple<bool, string>(false, "项的大小分隔值不在配置项最大值和最小值之间!");
  284. return new Tuple<bool, string>(true, "验证通过!");
  285. }
  286. //绑定方法列表方法
  287. private void BindList<T>()
  288. {
  289. MethodInfo[] methodList = typeof(T).GetMethods();
  290. if (null != methodList && 0 < methodList.Length)
  291. {
  292. foreach (MethodInfo item in methodList)
  293. {
  294. ChartFunction[] Description = item.GetCustomAttributes(typeof(ChartFunction), false) as ChartFunction[];
  295. if (null != Description && 1 <= Description.Length)
  296. Attributelist.Add(new ChartFunction(Description[0].Name, Description[0].ItemType, Description[0].ClassName));
  297. }
  298. }
  299. }
  300. //清空
  301. protected void btnClear_Click(object sender, EventArgs e)
  302. {
  303. ClearPage();
  304. }
  305. //清空界面数据
  306. protected void ClearPage()
  307. {
  308. labID.Text = "";
  309. txtChartItemName.Text = "";
  310. txtCycle.Text = "-1";
  311. txtItemMinValue.Text = "-1";
  312. txtItemMaxValue.Text = "-1";
  313. txtSplitNumberOfDX.Text = "-1";
  314. txtItemCount.Text = "1";
  315. txtItemString.Text = "";
  316. txtIndexStart.Text = "-1";
  317. txtIndexEnd.Text = "-1";
  318. dpDrawLine.SelectedValue = "-1";
  319. dpFuntionType.SelectedValue = "-1";
  320. dpChartCssId.SelectedValue = "-1";
  321. txtOrderBy.Text = "";
  322. dpChartCssId.Items.Clear();
  323. ListItem li = new ListItem();
  324. li.Text = "==请选择==";
  325. li.Value = "-1";
  326. dpChartCssId.Items.Add(li);
  327. if (null != cssList)
  328. for (int i = 0; i < cssList.Count; i++)
  329. {
  330. if (cssList[i].ParentId == 0 || cssList[i].ParentId == -1) //不加载单独的子样式
  331. {
  332. dpChartCssId.Items.Add(new ListItem(cssList[i].Name, cssList[i].Id.ToString()));
  333. }
  334. }
  335. }
  336. //生成走势图数据
  337. protected void btn_CreateTrendChart_Click(object sender, EventArgs e)
  338. {
  339. var t = CreateTrendChartData(Cid, chartId, 0);
  340. if (t.Item1)
  341. ShowMessageBox(string.IsNullOrEmpty(t.Item2) ? "数据生成成功" : t.Item2);
  342. else
  343. ShowMessageBox(string.IsNullOrEmpty(t.Item2) ? "数据生成失败" : t.Item2);
  344. }
  345. //只能选择相应项对应的样式
  346. protected void dpFuntionType_SelectedIndexChanged(object sender, EventArgs e)
  347. {
  348. dpChartCssId.Items.Clear();
  349. ListItem li = new ListItem();
  350. li.Text = "==请选择==";
  351. li.Value = "-1";
  352. dpChartCssId.Items.Add(li);
  353. if (null != cssList)
  354. for (int i = 0; i < cssList.Count; i++)
  355. {
  356. if (cssList[i].ParentId == 0 || cssList[i].ParentId == -1) //不加载单独的子样式
  357. {
  358. if (dpFuntionType.SelectedValue == cssList[i].FuntionTypeCss.ToString())
  359. {
  360. dpChartCssId.Items.Add(new ListItem(cssList[i].Name, cssList[i].Id.ToString()));
  361. }
  362. }
  363. }
  364. }
  365. protected void LinkButton_CssEdit_Click(object sender, EventArgs e)
  366. {
  367. Response.Redirect("ChartCssConfigEdit.aspx?authPage=" + authPage + "&Id=" + dpChartCssId.SelectedValue + "&Action=Modify");
  368. }
  369. }
  370. }