using DevExpress.Utils.Colors; using DevExpress.Utils.Extensions; using DevExpress.XtraEditors; using IStation.Model; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Windows.Forms; namespace IStation.WinFrmUI.Basic { /// /// /// public partial class ElecPriceMgrCtrl : XtraUserControl { public ElecPriceMgrCtrl() { InitializeComponent(); this.gridView1.SetNormalView(); this.gridView1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; this.gridView1.OptionsView.AllowCellMerge = true; this.gridView1.ActiveFilterEnabled = false; this.gridView1.ShowViewCaption(); this.layoutControl1.SetupLayoutControl(); } public class CurrentViewModel : Model.ElecPriceHourSetting { public CurrentViewModel() { } public CurrentViewModel(Model.ElecPriceHourSetting rhs, string belongName) : base(rhs) { this.BelongName = belongName; } public string BelongName { get; set; } public int StartMonth { get; set; } public int EndMonth { get; set; } } private BindingList _allBindingList = null;//所有绑定列表 private Model.ElecPrice _elecPrice = null; //提问:这个这个和实例化有什么区别 /// /// 绑定数据 /// public void Clear() { _allBindingList = new BindingList(); this.currentViewModelBindingSource.DataSource = _allBindingList; } /// /// 绑定数据 /// public void SetBindingData() { WaitFrmHelper.ShowWaitForm("正在加载数据..."); _allBindingList = new BindingList(); var bll = new BLL.ElecPrice(); _elecPrice = bll.GetAll().First(); if (_elecPrice != null) { this.gridView1.ViewCaption = _elecPrice.Name; if (_elecPrice.Settings != null && _elecPrice.Settings.MonthList != null) { var months = _elecPrice.Settings.MonthList.OrderBy(x => x.StartMonth); foreach (var month in months) { if (month.HourList == null) continue; var belongName = $"{month.StartMonth}~{month.EndMonth}(月)"; var hours = month.HourList.OrderBy(x => x.StartHour); foreach (var hour in hours) { var vm = new CurrentViewModel(hour, belongName); vm.StartMonth = month.StartMonth; vm.EndMonth = month.EndMonth; _allBindingList.Add(vm); } } } } this.currentViewModelBindingSource.DataSource = _allBindingList; this.gridView1.BestFitColumns(); WaitFrmHelper.HideWaitForm(); } //添加电费 public void AddElePrice() { var dlg = new AddElectricDlg(); dlg.SetBindingData(); dlg.ReloadDataEvent += (price) => { _elecPrice.Settings.MonthList.Add(price); var bll = new BLL.ElecPrice(); var isok = bll.Update(_elecPrice); if (isok) { this.SetBindingData(); this.currentViewModelBindingSource.ResetBindings(false); return true; } return false; }; dlg.ShowDialog(); } // var oldbelongName= _allBindingList.Where(e=>e.BelongName==belongName).FirstOrDefault(); //if (oldbelongName == null) //编辑电费 public void EditElePrice() { var row = gridView1.GetCurrentViewModel(_allBindingList); if (row == null) return; var editTime = _elecPrice.Settings; //提问:这句话点不到hourlist new一个monthsetting就能.到hourlist var FindMonth = editTime.MonthList.Find(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth); var addHour = _elecPrice.Settings.MonthList.IndexOf(FindMonth); var editHour = editTime.MonthList[addHour]; var dlg = new EditElectricDlg(); dlg.SetBindingData(editHour.HourList); dlg.ReLoadDataevent += (price) => { editHour.HourList.Clear(); editHour.HourList=price; var bll = new BLL.ElecPrice(); var isok = bll.Update(_elecPrice); if (isok) { this.currentViewModelBindingSource.ResetBindings(false); this.SetBindingData(); return true; } return false; }; dlg.ShowDialog(); } //检查按钮 public bool PriceCheck() { //判断月份 var allMonths = _elecPrice.Settings.MonthList; allMonths = allMonths.OrderBy(x => x.EndMonth).ToList(); var monthCount = allMonths.Count; if (allMonths.First().StartMonth != 1 || allMonths.Last().EndMonth != 12) { XtraMessageBox.Show("开始月份和结束月份有误"); return false; } for (int i = 0; i < monthCount - 1; i++) { if (allMonths[i].EndMonth + 1 != allMonths[i + 1].StartMonth) { XtraMessageBox.Show("月份输入有误"); return false; } } //判断时间 for (int k = 0; k < monthCount; k++) { var eleprice = allMonths[k]; var hourList = eleprice.HourList.OrderBy(x => x.StartHour).ToList(); if (hourList.First().StartHour != 1 || hourList.Last().EndHour != 24) { XtraMessageBox.Show("结束时间或开始时间输入有误"); return false; } for (int x = 0; x < eleprice.HourList.Count - 1; x++) { var frist = hourList[x]; var second = hourList[x + 1]; var last = hourList[eleprice.HourList.Count - 1]; if (second.StartHour == second.EndHour) { XtraMessageBox.Show("开始时间和结束时间相同"); return false; } if (frist.EndHour != second.StartHour) { XtraMessageBox.Show("时间输入有误"); return false; } } } XtraMessageBox.Show("输入正确"); return false; } //var eleprice = allMonths[i]; //var hourList = eleprice.HourList.OrderBy(x => x.StartHour).ToList(); //for (int j = 0; i < eleprice.HourList.Count; j++) //{ // if (hourList[j].EndHour != hourList[j + 1].StartHour) // { // XtraMessageBox.Show("时间输入有误"); // return; // } //} // var monthCount = _elecPrice.Settings.MonthList; //for (int i = 0; i < monthCount; i++) /// /// 删除电费 /// public void DeletePrice() { var row = this.gridView1.GetCurrentViewModel(_allBindingList); if (row == null) return; if (XtraMessageBox.Show("确定要删除所选中?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK) return; _elecPrice.Settings.MonthList.RemoveAll(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth); var isok = new BLL.ElecPrice().Update(_elecPrice); if (isok) { this.currentViewModelBindingSource.ResetBindings(false); } this.SetBindingData(); this.currentViewModelBindingSource.ResetBindings(false); MessageBox.Show("删除成功", "提示"); } } }