| | |
| | | using DevExpress.Utils.DragDrop; |
| | | using DevExpress.UIAutomation; |
| | | using DevExpress.Utils.DragDrop; |
| | | using DevExpress.XtraEditors; |
| | | using DevExpress.XtraTreeList; |
| | | using DevExpress.XtraTreeList.Handler; |
| | |
| | | |
| | | 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; |
| | |
| | | } |
| | | if (currentvm.ParentID == targetVm.ParentID) |
| | | { |
| | | SetTreeListSorter(currentvm.ParentID); |
| | | |
| | | e.Effect = await SetTreeListSorter(currentvm.ParentID) ? DragDropEffects.Move : DragDropEffects.None; |
| | | return; |
| | | } |
| | | e.Effect = DragDropEffects.None; |
| | |
| | | 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) |
| | |
| | | if (!await _bll.UpdateSorter(sortList)) |
| | | { |
| | | TipFormHelper.ShowError("修改排序失败!"); |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | // this.catalogViewModelBindingSource.ResetBindings(false); |
| | | } |
| | | |
| | |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | | } |