using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using CB.Data; using CB.Entity; using CB.Framework; using CB.Common; using CB.TrendChart; using CB.TrendChart.LotteryTrendChart; namespace CB.Admin.Plugins.TrendChartConfig { public partial class TrendChartItemInfo : AdminPage { protected int chartId, Cid; protected string trendName = string.Empty, Action = string.Empty; List Attributelist = new List(); //方法 IList cssList = ChartCssConfigService.ToList(); //样式 protected void Page_Load(object sender, EventArgs e) { chartId = WRequest.GetQueryInt("Id"); Action = WRequest.GetQueryString("Action"); Cid = WRequest.GetQueryInt("Cid"); trendName = TrendChartService.Get(chartId).Name; BindList(); BindList(); BindList(); if (!Page.IsPostBack) { InitData(); } } protected override void InitData() { #region dlFuntionType列表绑定 //dpFuntionType.Items.Clear(); for (int i = 0; i < Attributelist.Count; i++) { dpFuntionType.Items.Add(new ListItem(Attributelist[i].Name + "_" + ((int)Attributelist[i].ItemType).ToString(), ((int)Attributelist[i].ItemType).ToString())); } if (null != cssList) for (int i = 0; i < cssList.Count; i++) { if (cssList[i].ParentId == 0 || cssList[i].ParentId == -1) //不加载单独的子样式 { dpChartCssId.Items.Add(new ListItem(cssList[i].Name, cssList[i].Id.ToString())); } } #endregion BindRepeaterList(); } protected override void BindRepeaterList() { repeaterList.DataSource = null; var list = CB.Data.TrendChartItemService.ToList(new Entity.TrendChartItemInfo() { ChartId = chartId }); repeaterList.DataSource = list; repeaterList.DataBind(); } protected void repeaterList_ItemCommand(object source, RepeaterCommandEventArgs e) { if ("moveUp" == e.CommandName) { var list = CB.Data.TrendChartItemService.ToList(new Entity.TrendChartItemInfo() { ChartId = chartId }); if (list == null || list.Count == 0) return; for (int i = list.Count - 1; i >= 0; i--) { if (list[i].Id == TypeConverter.ObjectToInt(e.CommandArgument)) { if (i > 0) { list[i].OrderBy = list[i].OrderBy - 1; if (CB.Data.TrendChartItemService.Update(list[i])) { list[i - 1].OrderBy = list[i - 1].OrderBy + 1; if (TrendChartItemService.Update(list[i - 1])) { ChangeState(TrendChartStatus.Test, chartId); Logs("上移走势图项配置", string.Format("上移走势图项配置[ID={0}]", e.CommandArgument)); } } } else { return; } } } } if ("moveDown" == e.CommandName) { var list = CB.Data.TrendChartItemService.ToList(new Entity.TrendChartItemInfo() { ChartId = chartId }); if (list == null || list.Count == 0) return; for (int i = list.Count - 1; i >= 0; i--) { if (list[i].Id == TypeConverter.ObjectToInt(e.CommandArgument)) { if (i < list.Count - 1) { if (list[i].Id == TypeConverter.ObjectToInt(e.CommandArgument)) { list[i].OrderBy = list[i].OrderBy + 1; if (CB.Data.TrendChartItemService.Update(list[i])) { list[i + 1].OrderBy = list[i + 1].OrderBy - 1; if (TrendChartItemService.Update(list[i + 1])) { ChangeState(TrendChartStatus.Test, chartId); Logs("下移走势图项配置", string.Format("下移走势图项配置[ID={0}]", e.CommandArgument)); } } } } else { return; } } } } if ("dndel" == e.CommandName) { CB.Data.TrendChartItemService.Delete(TypeConverter.ObjectToInt(e.CommandArgument)); ChangeState(TrendChartStatus.Test, chartId); Logs("删除走势图项配置", string.Format("删除走势图项配置[ID={0}]", e.CommandArgument)); } if ("edit" == e.CommandName) { labID.Text = TypeConverter.ObjectToInt(e.CommandArgument).ToString(); Entity.TrendChartItemInfo Entity = CB.Data.TrendChartItemService.Get(TypeConverter.ObjectToInt(e.CommandArgument)); if (null == Entity) return; txtChartItemName.Text = Entity.ChartItemName; txtCycle.Text = Entity.Cycle.ToString(); txtItemMinValue.Text = Entity.ItemMinValue.ToString(); txtItemMaxValue.Text = Entity.ItemMaxValue.ToString(); txtSplitNumberOfDX.Text = Entity.SplitNumberOfDX.ToString(); txtItemCount.Text = Entity.ItemCount.ToString(); txtItemString.Text = string.Join(",", Entity.ItemString); txtIndexStart.Text = Entity.IndexStart.ToString(); txtIndexEnd.Text = Entity.IndexEnd.ToString(); dpDrawLine.SelectedValue = Entity.DrawLine ? "1" : "0"; ListItem chartli = ddlTrendChartType.Items.FindByValue(((int)Entity.ChartType).ToString()); if (chartli != null) { ddlTrendChartType.ClearSelection(); chartli.Selected = true; } for (int i = 0; i < Attributelist.Count; i++) { if (Attributelist[i].ItemType == Entity.FuntionType) { dpFuntionType.SelectedValue = ((int)Entity.FuntionType).ToString(); break; } } try { dpChartCssId.Items.Clear(); ListItem li = new ListItem(); li.Text = "==请选择=="; li.Value = "-1"; dpChartCssId.Items.Add(li); if (null != cssList) for (int i = 0; i < cssList.Count; i++) { if (cssList[i].ParentId == 0 || cssList[i].ParentId == -1) //不加载单独的子样式 { if (dpFuntionType.SelectedValue == cssList[i].FuntionTypeCss.ToString()) { dpChartCssId.Items.Add(new ListItem(cssList[i].Name, cssList[i].Id.ToString())); } } } dpChartCssId.SelectedValue = Entity.ChartCssId.ToString(); } catch { dpChartCssId.SelectedValue = "-1"; } txtOrderBy.Text = Entity.OrderBy.ToString(); } BindRepeaterList(); } public string GetChartName(int chartid) { var entity = CB.Data.TrendChartService.Get(chartid); return null != entity ? entity.Name : ""; } //修改或者保存 protected void btnEdit_Click(object sender, EventArgs e) { CB.Entity.TrendChartItemInfo Entity = new CB.Entity.TrendChartItemInfo(); Entity.ChartId = chartId; Entity.ChartType = TypeConverter.StringToEnum(ddlTrendChartType.SelectedValue); Entity.ChartItemName = txtChartItemName.Text; Entity.Cycle = txtCycle.Text.ToInt(); Entity.ItemMinValue = txtItemMinValue.Text.ToInt(); Entity.ItemMaxValue = txtItemMaxValue.Text.ToInt(); Entity.SplitNumberOfDX = txtSplitNumberOfDX.Text.ToInt(); Entity.ItemCount = txtItemCount.Text.ToInt(); Entity.ItemString = txtItemString.Text.TrimEnd(',').Split(','); Entity.IndexStart = txtIndexStart.Text.ToInt(); Entity.IndexEnd = txtIndexEnd.Text.ToInt(); Entity.DrawLine = dpDrawLine.SelectedValue == "1" ? true : false; for (int i = 0; i < Attributelist.Count; i++) { if (((int)Attributelist[i].ItemType).ToString() == dpFuntionType.SelectedValue) { Entity.FuntionType = Attributelist[i].ItemType; Entity.ClassName = Attributelist[i].ClassName; break; } } Entity.ChartCssId = dpChartCssId.SelectedValue.ToInt(); Entity.OrderBy = txtOrderBy.Text.ToInt(); Tuple validate = Validate(Entity); Entity.TrendChartInfo model = CB.Data.TrendChartService.Get(chartId); if (null != model) model.Status = TrendChartStatus.Test; if (validate.Item1) //通过验证 { if (labID.Text != "") //修改 { Entity.Id = labID.Text.ToInt(); if (TrendChartItemService.Update(Entity)) { if (TrendChartService.Update(model)) { ClearPage(); ChangeState(TrendChartStatus.Test, chartId); Logs("修改走势图项配置", string.Format("修改走势图项配置[ID={0}]", Entity.Id)); ShowMessageBox("提示:修改成功!", string.Format("TrendChartItemInfo.aspx?Cid={0}&Id={1}&Action={2}&authPage={3}", Cid, chartId, Action, authPage)); } } labID.Text = ""; } else //新增 { if (TrendChartItemService.Save(Entity)) { if (TrendChartService.Update(model)) { ClearPage(); ChangeState(TrendChartStatus.Test, chartId); Logs("新增走势图项配置", string.Format("新增走势图项配置[Name={0}]", Entity.ChartItemName)); ShowMessageBox("提示:新增成功!", string.Format("TrendChartItemInfo.aspx?Cid={0}&Id={1}&Action={2}&authPage={3}", Cid, chartId, Action, authPage)); } } } } else { Response.Write(string.Format("", validate.Item2)); } BindRepeaterList(); } //数据验证 public Tuple Validate(Entity.TrendChartItemInfo Entity) { 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 == "") return new Tuple(false, "请检查是否填完数据(所有项都必须填写值)!"); txtItemString.Text = ""; txtIndexStart.Text = "-1"; txtIndexEnd.Text = "-1"; dpDrawLine.SelectedValue = "-1"; dpFuntionType.SelectedValue = "-1"; dpChartCssId.SelectedValue = "-1"; txtOrderBy.Text = ""; if (Entity.ItemString.Length != Entity.ItemCount) return new Tuple(false, "配置项个数不等于项长度!"); if (Entity.ItemMinValue != -1 || Entity.ItemMaxValue != -1) if (Entity.ItemMaxValue < Entity.ItemMinValue) return new Tuple(false, "项的最大值小于最小值!"); //else if ((Entity.ItemMaxValue - Entity.ItemMinValue + 1) != Entity.ItemCount) // return new Tuple(false, "配置项最大值和最小值之间个数不等于项长度!"); else if (Entity.SplitNumberOfDX != -1) if (Entity.ItemMaxValue < Entity.SplitNumberOfDX && Entity.SplitNumberOfDX > Entity.ItemMinValue) return new Tuple(false, "项的大小分隔值不在配置项最大值和最小值之间!"); return new Tuple(true, "验证通过!"); } //绑定方法列表方法 private void BindList() { MethodInfo[] methodList = typeof(T).GetMethods(); if (null != methodList && 0 < methodList.Length) { foreach (MethodInfo item in methodList) { ChartFunction[] Description = item.GetCustomAttributes(typeof(ChartFunction), false) as ChartFunction[]; if (null != Description && 1 <= Description.Length) Attributelist.Add(new ChartFunction(Description[0].Name, Description[0].ItemType, Description[0].ClassName)); } } } //清空 protected void btnClear_Click(object sender, EventArgs e) { ClearPage(); } //清空界面数据 protected void ClearPage() { labID.Text = ""; txtChartItemName.Text = ""; txtCycle.Text = "-1"; txtItemMinValue.Text = "-1"; txtItemMaxValue.Text = "-1"; txtSplitNumberOfDX.Text = "-1"; txtItemCount.Text = "1"; txtItemString.Text = ""; txtIndexStart.Text = "-1"; txtIndexEnd.Text = "-1"; dpDrawLine.SelectedValue = "-1"; dpFuntionType.SelectedValue = "-1"; dpChartCssId.SelectedValue = "-1"; txtOrderBy.Text = ""; dpChartCssId.Items.Clear(); ListItem li = new ListItem(); li.Text = "==请选择=="; li.Value = "-1"; dpChartCssId.Items.Add(li); if (null != cssList) for (int i = 0; i < cssList.Count; i++) { if (cssList[i].ParentId == 0 || cssList[i].ParentId == -1) //不加载单独的子样式 { dpChartCssId.Items.Add(new ListItem(cssList[i].Name, cssList[i].Id.ToString())); } } } //生成走势图数据 protected void btn_CreateTrendChart_Click(object sender, EventArgs e) { var t = CreateTrendChartData(Cid, chartId, 0); if (t.Item1) ShowMessageBox(string.IsNullOrEmpty(t.Item2) ? "数据生成成功" : t.Item2); else ShowMessageBox(string.IsNullOrEmpty(t.Item2) ? "数据生成失败" : t.Item2); } //只能选择相应项对应的样式 protected void dpFuntionType_SelectedIndexChanged(object sender, EventArgs e) { dpChartCssId.Items.Clear(); ListItem li = new ListItem(); li.Text = "==请选择=="; li.Value = "-1"; dpChartCssId.Items.Add(li); if (null != cssList) for (int i = 0; i < cssList.Count; i++) { if (cssList[i].ParentId == 0 || cssList[i].ParentId == -1) //不加载单独的子样式 { if (dpFuntionType.SelectedValue == cssList[i].FuntionTypeCss.ToString()) { dpChartCssId.Items.Add(new ListItem(cssList[i].Name, cssList[i].Id.ToString())); } } } } protected void LinkButton_CssEdit_Click(object sender, EventArgs e) { Response.Redirect("ChartCssConfigEdit.aspx?authPage=" + authPage + "&Id=" + dpChartCssId.SelectedValue + "&Action=Modify"); } } }