From 9be9ba4e159969fb5e32648c2c34e912ccc3ae6d Mon Sep 17 00:00:00 2001 From: duheng <2286773002@qq.com> Date: 星期五, 28 三月 2025 14:22:42 +0800 Subject: [PATCH] 优化细节问题 --- WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs | 119 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 82 insertions(+), 37 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs index c8576b9..b449283 100644 --- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs +++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs @@ -13,11 +13,12 @@ this.PageTitle.HeaderSvgImage = this.svgImage32[0]; this.PageTitle.SvgImageSize = new Size(24, 24); this.sysFlagTreeListCtrl1.FocusedChangedEvent += ModuleTreeListCtrl1_FocusedChangedEvent; + behaviorManager1.Detach<DragDropBehavior>(gridView1); } private List<SysFlagViewModel> _allBindingList = new List<SysFlagViewModel>(); - private int _LastRowIndex; + private long _typeId; private Yw.BLL.SysFlag _bll = null; @@ -29,6 +30,7 @@ //鑱氱劍鍒囨崲 private async void ModuleTreeListCtrl1_FocusedChangedEvent(long typeId) { + _typeId = typeId; var alllist = await _bll.GetByTypeID(typeId); _allBindingList.Clear(); foreach (var item in alllist) @@ -53,7 +55,7 @@ var moduleid = this.sysFlagTreeListCtrl1.GetCurrentID(); if (moduleid == 0) { - return; + return; } dlg.SetBindingData(moduleid); dlg.ReloadDataEvent += async (rhs) => @@ -135,12 +137,7 @@ { if (barCheckSorter.Checked) { - behaviorManager1.Attach<DragDropBehavior>(gridView1, behavior => - { - behavior.BeginDragDrop += Behavior_BeginDragDrop; - behavior.DragDrop += Behavior_DragDrop; - behavior.EndDragDrop += Behavior_EndDragDrop; - }); + behaviorManager1.Attach<DragDropBehavior>(gridView1); } else { @@ -148,44 +145,92 @@ } } - private void Behavior_DragDrop(object sender, DragDropEventArgs e) + private async void dragDropEvents1_DragDrop(object sender, DevExpress.Utils.DragDrop.DragDropEventArgs e) { - //behaviorManager1.Detach<DragDropBehavior>(gridView1); - return; - } - - private void Behavior_DragEnter(object sender, DragEnterEventArgs e) - { - return; - } - - private void Behavior_BeginDragDrop(object sender, BeginDragDropEventArgs e) - { - _LastRowIndex = gridView1.FocusedRowHandle; - var currentCellValue = gridView1.GetFocusedValue(); - } - - //鎷栨嫿鎺掑簭鎿嶄綔 - private async void Behavior_EndDragDrop(object sender, EndDragDropEventArgs e) - { - var vm = this.gridView1.GetCurrentViewModel(_allBindingList); - var sorterList = new List<Yw.Vmo.Sorter>(); - int i = 1; - foreach (var item in _allBindingList) + var indexs = e.Data as int[]; + if (indexs == null || indexs.Length < 1) { - sorterList.Add(new Yw.Vmo.Sorter() { ID = item.ID, SortCode = i }); - i++; + e.Handled = true; + return; } - if (await _bll.UpdateSorter(sorterList)) + var sourceIndex = indexs[0]; + var sourceObj = this.gridView1.GetRow(sourceIndex) as SysFlagViewModel; + if (sourceObj == null) { - this.sysFlagViewModelBindingSource.ResetBindings(false); + 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 SysFlagViewModel; + if (destObj == null) + { + e.Handled = true; + return; + } + + var sorters = new List<Yw.Vmo.Sorter>(); + + 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 { - gridView1.FocusedRowHandle = _LastRowIndex; - TipFormHelper.ShowError("淇敼鎺掑簭澶辫触!"); + 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(_typeId); } } } \ No newline at end of file -- Gitblit v1.9.3