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