using DevExpress.Utils.Extensions; using DevExpress.XtraEditors; using IStation.Unit; using IStation.Untity; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace IStation.WinFrmUI.Basic { public partial class MonitorPointMgrPage : DocumentPage { public MonitorPointMgrPage() { InitializeComponent(); this.PageTitle.Caption = "监测点"; this.gridView1.SetNormalView(); this.monitorPointGroupListCtrl1.FocusedChangedEvent += MonitorPointGroupListCtrl1_FocusedChangedEvent1; this.gridView1.RowCellClick += (s, e) => { if (e.Button == MouseButtons.Right) { if (e.CellValue != null) { Clipboard.SetText(e.CellValue.ToString()); } } }; } public class CurrentViewModel : Model.MonitorPointExSignalWithSignalType { public CurrentViewModel() { } public CurrentViewModel(Model.MonitorPointExSignalWithSignalType rhs) : base(rhs) { if (int.TryParse(rhs.UnitValue, out int unitValue)) { var dict = UnitHelper.GetEnUnitDict(rhs.UnitType); if (dict != null) this.Unit = dict[unitValue]; } else { this.Unit = rhs.UnitValue; } this.FlagsDisplay = FlagsHelper.ToString(rhs.Flags); } public string Unit { get; set; } public string FlagsDisplay { get; set; } public new void Reset(Model.MonitorPointExSignal rhs) { base.Reset(rhs); this.FlagsDisplay = FlagsHelper.ToString(rhs.Flags); } } private long _belongId, _gropuId; private string _belongType = IStation.ObjectType.Station; private BLL.MonitorPoint _bll = new BLL.MonitorPoint(); private List _allBindingList = null; /// /// 初始化数据 /// public override void InitialDataSource() { this.monitorPointGroupListCtrl1.SetBindingData(); } //聚焦变换 private void MonitorPointGroupListCtrl1_FocusedChangedEvent1(string objectType, object obj) { if (objectType == null || obj == null) { _belongId = 0; this.tabPane1.Pages.ForEach(x => x.PageVisible = false); } else { var isStation = objectType == IStation.ObjectType.Station; this.tabNavigationPageMonitorPoint.PageVisible = !isStation; this.tabNavigationPageMonitorPointInfo.PageVisible = isStation; if (isStation) { this.tabPane1.SelectedPage = this.tabNavigationPageMonitorPointInfo; this.ribbonControl1.SelectedPage = this.ribbonPageMonitorPointInfo; var model = obj as Model.Station; _belongId = model.ID; } else { this.tabPane1.SelectedPage = this.tabNavigationPageMonitorPoint; this.ribbonControl1.SelectedPage = this.ribbonPageMonitorPoint; var model = obj as Model.MonitorPointGroup; _belongId = model.BelongID; _gropuId = model.ID == -1 ? 0 : model.ID; var list = _bll.GetExSignalWithSignalTypeByBelongTypeAndBelongIDAndGroupID(_belongType, model.BelongID, _gropuId); SetBindingData(list); } } } /// ///绑定数据 /// public void SetBindingData(List list) { _allBindingList = new List(); if (list != null && list.Count > 0) { foreach (var item in list) { var vm = new CurrentViewModel(item); _allBindingList.Add(vm); } } this.currentViewModelBindingSource.DataSource = _allBindingList; } #region 基础方法 /// /// 添加 /// private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_allBindingList == null) return; WaitFrmHelper.ShowWaitForm(); var dlg = new AddMonitorPointDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(); dlg.VerifyTagNameExistEvent += (rhs) => { return _bll.IsExistTagName(rhs); }; dlg.ReloadDataEvent += (rhs) => { rhs.BelongType = _belongType; rhs.BelongID = _belongId; rhs.GroupID = _gropuId; rhs.SortCode = _allBindingList.Count == 0 ? 1 : _allBindingList.Max(x => x.SortCode) + 1; rhs.MonitorPointID = _bll.Insert(rhs); if (rhs.MonitorPointID > 0) { var model = _bll.GetExSignalWithSignalTypeByID(rhs.MonitorPointID); var vm = new CurrentViewModel(model); _allBindingList.Add(vm); this.currentViewModelBindingSource.ResetBindings(false); return true; } return false; }; dlg.ShowDialog(); } /// /// 编辑 /// private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.gridView1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } WaitFrmHelper.ShowWaitForm(); var dlg = new EditMonitorPointDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(vm); dlg.VerifyTagNameExistEvent += (rhs, id) => { return _bll.IsExistTagNameExceptID(rhs, id); }; dlg.ReloadDataEvent += (rhs) => { var bol = _bll.Update(rhs); if (bol) { vm.Reset(rhs); this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); } return bol; }; dlg.ShowDialog(); } /// /// 删除 /// private void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var row = this.gridView1.GetCurrentViewModel(_allBindingList); if (row == null) return; if (XtraMessageBox.Show($"确认删除数据行?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) != DialogResult.OK) return; var result = new BLL.MonitorPoint().DeleteByID(row.MonitorPointID, out string msg); if (!result) { XtraMessageBox.Show($"删除失败!\n原因:{msg}", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!string.IsNullOrEmpty(msg)) XtraMessageBox.Show($"删除成功!\n警告:{msg}", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); else XtraMessageBox.Show($"删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); _allBindingList.RemoveAll(x => x.MonitorPointID == row.MonitorPointID); this.currentViewModelBindingSource.ResetBindings(false); } /// /// 标签名称 /// private void barBtnUpdateTagName_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.gridView1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } var dlg = new SetTagNameDlg(); dlg.SetBindingData(vm.TagName); dlg.ReloadDataEvent += (tagName) => { var result = _bll.UpdateTagName(vm.MonitorPointID, tagName); if (result) { vm.TagName = tagName; this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); } return result; }; dlg.ShowDialog(); } /// /// 排序码 /// private void barBtnUpdateSortCode_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.gridView1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } var dlg = new SetSortCodeDlg(); dlg.SetBindingData(vm.SortCode); dlg.ReloadDataEvent += (rhs) => { var model = new Model.MonitorPointExSignal(vm); model.SortCode = rhs; var result = _bll.Update(model); if (result) { vm.Reset(model); this.currentViewModelBindingSource.ResetBindings(false); } return result; }; dlg.ShowDialog(); } /// /// 使用状态 /// private void barBtnUpdateUseStatus_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.gridView1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } var dlg = new SetUseStatusDlg(); dlg.SetBindingData(vm.UseStatus); dlg.ReloadDataEvent += (useStatus) => { var result = _bll.UpdateUseStatus(vm.MonitorPointID, (int)useStatus); if (result) { vm.UseStatus = useStatus; this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); } return result; }; dlg.ShowDialog(); } //检索 private void barCekSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (this.barCekSearch.Checked) this.gridView1.ShowFindPanel(); else this.gridView1.HideFindPanel(); } /// /// 刷新数据 /// private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { InitialDataSource(); } #endregion //导出Excel private void barBtnExportPumpInfoExcel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { // this.pumpInfoGridCtrl1.ExportExcel(); } } }