using DevExpress.Utils.DragDrop; using DevExpress.XtraDiagram.Bars; namespace HStation.WinFrmUI.Basic { public partial class SysPropManageMainPanel : DocumentPage { public SysPropManageMainPanel() { InitializeComponent(); this.gridView1.SetNormalView(); this.gridView1.RegistCustomDrawRowIndicator(); this.PageTitle.Caption = "属性管理"; this.PageTitle.HeaderSvgImage = this.svgImage32[0]; this.PageTitle.SvgImageSize = new Size(24, 24); this.propGroupTreeListCtrl1.FocusedChangedEvent += ModuleTreeListCtrl1_FocusedChangedEvent; } private List _allBindingList = new List(); private Yw.BLL.SysProp _bll = null; private long _groupID; public override void InitialDataSource() { SetBindingData(); this.propGroupTreeListCtrl1.SetBindingData(); } //聚焦切换 private async void ModuleTreeListCtrl1_FocusedChangedEvent(long groupID) { _groupID = groupID; var alllist = await _bll.GetByGroupID(groupID); _allBindingList.Clear(); foreach (var item in alllist) { _allBindingList.Add(new SysPropViewModel(item)); } this.propViewModelBindingSource.DataSource = _allBindingList; this.propViewModelBindingSource.ResetBindings(false); } private void SetBindingData() { _bll = new Yw.BLL.SysProp(); } //添加 private void BtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var dlg = new AddSysPropDlg(); var groupid = this.propGroupTreeListCtrl1.GetCurrentGroupID(); var typeid = this.propGroupTreeListCtrl1.GetCurrentTypeID(); if (groupid <= 0) return; if (typeid <= 0) return; dlg.SetBindingData(groupid, typeid); dlg.ReloadDataEvent += async (rhs) => { var id = await _bll.Insert(rhs); if (id > 0) { var model = await _bll.GetByID(id); _allBindingList.Add(new SysPropViewModel(model)); this.propViewModelBindingSource.ResetBindings(false); return true; } return false; }; dlg.ShowDialog(); } //编辑 private void barBtnEditPumpCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var dlg = new EditSysPropDlg(); var vm = this.gridView1.GetCurrentViewModel(_allBindingList); if (vm == null) { MessageBoxHelper.ShowWarning("请选择数据行"); return; } dlg.SetBindingData(vm.ID); dlg.ReloadDataEvent += async (rhs) => { if (await _bll.Update(rhs)) { vm.Reset(rhs); return true; } return false; }; dlg.ShowDialog(); } //删除 private async void BtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var currentVm = this.gridView1.GetCurrentViewModel(_allBindingList); if (currentVm == null) { MessageBoxHelper.ShowWarning("请选择数据行!"); return; } if (MessageBoxHelper.IsClickOk($"确认删除数据行?", "提示")) return; var result = await _bll.DeleteByID(currentVm.ID); if (result) { _allBindingList.Remove(currentVm); this.propViewModelBindingSource.ResetBindings(false); MessageBoxHelper.ShowSuccess($"删除成功!"); } else { MessageBoxHelper.ShowError($"删除失败!"); return; } } //属性选项 private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { if (_allBindingList == null || _allBindingList.Count < 1) return; var row = this.gridView1.GetCurrentViewModel(_allBindingList); if (row == null) return; if (e.Column == this.ColPropEdit) { var dlg = new SetSysPropChoiceDlg(); dlg.SetBindingData(row.ID); dlg.ShowDialog(); } } //排序 private void barCheckItemSorter_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var be = this.behaviorManager1.GetBehavior(this.gridView1); be.Properties.AllowDrag = barCheckSorter.Checked; } private async void dragDropEvents1_DragDrop(object sender, DevExpress.Utils.DragDrop.DragDropEventArgs e) { var indexs = e.Data as int[]; if (indexs == null || indexs.Length < 1) { e.Handled = true; return; } var sourceIndex = indexs[0]; var sourceObj = this.gridView1.GetRow(sourceIndex) as SysPropViewModel; if (sourceObj == null) { e.Handled = true; return; } var destIndex = this.gridView1.GetRowHandleByCP(e.Location); if (destIndex < 0) { e.Handled = true; return; } var destObj = this.gridView1.GetRow(destIndex) as SysPropViewModel; if (destObj == null) { e.Handled = true; return; } var sorters = new List(); if (e.InsertType == InsertType.Before) { sorters.Add(new Yw.Vmo.Sorter() { ID = sourceObj.ID, SortCode = destObj.SortCode }); _allBindingList.ForEach(x => { if (x.SortCode >= destObj.SortCode) { if (x != sourceObj) { sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 }); } } }); } else if (e.InsertType == InsertType.After) { sorters.Add(new Yw.Vmo.Sorter() { ID = sourceObj.ID, SortCode = destObj.SortCode + 1 }); _allBindingList.ForEach(x => { if (x.SortCode > destObj.SortCode) { if (x != sourceObj) { sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 }); } } }); } else { e.Handled = true; return; } var bol = await _bll.UpdateSorter(sorters); if (!bol) { e.Handled = true; return; } _allBindingList.ForEach(x => { var sorter = sorters.Find(t => t.ID == x.ID); if (sorter != null) { x.SortCode = sorter.SortCode; } }); } private void btnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { ModuleTreeListCtrl1_FocusedChangedEvent(_groupID); } } }