duheng
2024-11-08 bb817e5d4ba0afa9848cc80375ee2e10105e106e
WinFrmUI/HStation.WinFrmUI.Basic/01-SysCatalogManage/SysCatalogManageMainPanel.cs
@@ -1,4 +1,5 @@
using DevExpress.Utils.DragDrop;
using DevExpress.UIAutomation;
using DevExpress.Utils.DragDrop;
using DevExpress.XtraEditors;
using DevExpress.XtraTreeList;
using DevExpress.XtraTreeList.Handler;
@@ -175,16 +176,15 @@
        private TreeListNode currentDragNode = null;
        private void treeList1_DragDrop(object sender, DragEventArgs e)
        private async void treeList1_DragDrop(object sender, DragEventArgs e)
        {
            currentDragNode = (TreeListNode)e.Data.GetData(typeof(TreeListNode));
            var currentvm = GetViewModel(currentDragNode);
            var dragInsertPosition = AjustDirection(sender, e);
            var targetNode = GetTargetNode(e);
            var targetVm = GetViewModel(targetNode);
            var currentIndex = _allBindingList.IndexOf(currentvm);  //操作目标索引
            var targetIndex = _allBindingList.IndexOf(targetVm);  //目标位置索引
            var currentIndex = GetIndexOf(currentvm, _IndexList); //当前位置索引
            var targetIndex = GetIndexOf(targetVm, _IndexList);  //目标位置索引
            if (dragInsertPosition == DragInsertPosition.AsChild || targetVm == null || currentvm == null)
            {
                e.Effect = DragDropEffects.None;
@@ -202,8 +202,7 @@
            }
            if (currentvm.ParentID == targetVm.ParentID)
            {
                SetTreeListSorter(currentvm.ParentID);
                e.Effect = await SetTreeListSorter(currentvm.ParentID) ? DragDropEffects.Move : DragDropEffects.None;
                return;
            }
            e.Effect = DragDropEffects.None;
@@ -219,9 +218,9 @@
            return handler.StateData.DragInfo.DragInsertPosition;
        }
        private async void SetTreeListSorter(long parentId)
        private async Task<bool> SetTreeListSorter(long parentId)
        {
            var sortList = new List<Yw.Vmo.Sorter>();
             var sortList = new List<Yw.Vmo.Sorter>();
            var targetList = _IndexList.Where(x => x.ParentID == parentId).ToList();
            int i = 1;
            foreach (var item in targetList)
@@ -232,8 +231,9 @@
            if (!await _bll.UpdateSorter(sortList))
            {
                TipFormHelper.ShowError("修改排序失败!");
                return false;
            }
            return true;
            //  this.catalogViewModelBindingSource.ResetBindings(false);
        }
@@ -275,5 +275,49 @@
            }
            return node.Nodes.Count;
        }
        private CurrentTreeList GetTreeModel(TreeListNode node)
        {
            if (node == null)
                return default;
            var vm = GetViewModel(node);
            var model = new CurrentTreeList();
            model.ID = vm.ID;
            if (node.Nodes != null && node.Nodes.Any())
            {
                model.Children = new List<CurrentTreeList>();
                foreach (TreeListNode childNode in node.Nodes.Cast<TreeListNode>())
                {
                    var childModel = GetTreeModel(childNode);
                    model.Children.Add(childModel);
                }
            }
            return model;
        }
        private class CurrentTreeList
        {
            public CurrentTreeList()
            {
            }
            public long ID { get; set; }
            public List<CurrentTreeList> Children { get; set; }
        }
        private int GetIndexOf(SysCatalogViewModel vm, List<SysCatalogViewModel> dataSourse)
        {
            int i = 0;
            foreach (var item in dataSourse)
            {
                if (item.ID == vm.ID)
                {
                    return i;
                }
                i++;
            }
            return i;
        }
    }
}