Shuxia Ning
2024-12-17 907a1579fecf2c160852cf99b3ea77c08eb481cc
WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs
@@ -1,4 +1,5 @@
using DevExpress.Utils.DragDrop;
using Yw;
namespace HStation.WinFrmUI.Basic
{
@@ -135,12 +136,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 +144,87 @@
            }
        }
        private void Behavior_DragDrop(object sender, DragDropEventArgs e)
        private async void dragDropEvents1_DragDrop(object sender, DevExpress.Utils.DragDrop.DragDropEventArgs e)
        {
            //behaviorManager1.Detach<DragDropBehavior>(gridView1);
            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 SysFlagViewModel;
            if (sourceObj == null)
            {
                e.Handled = true;
            return;
        }
        private void Behavior_DragEnter(object sender, DragEnterEventArgs e)
            var destIndex = this.gridView1.GetRowHandleByCP(e.Location);
            if (destIndex < 0)
        {
                e.Handled = true;
            return;
        }
        private void Behavior_BeginDragDrop(object sender, BeginDragDropEventArgs e)
            var destObj = this.gridView1.GetRow(destIndex) as SysFlagViewModel;
            if (destObj == null)
        {
            _LastRowIndex = gridView1.FocusedRowHandle;
            var currentCellValue = gridView1.GetFocusedValue();
                e.Handled = true;
                return;
        }
        //拖拽排序操作
        private async void Behavior_EndDragDrop(object sender, EndDragDropEventArgs e)
            var sorters = new List<Yw.Vmo.Sorter>();
            if (e.InsertType == InsertType.Before)
        {
            var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
            var sorterList = new List<Yw.Vmo.Sorter>();
            int i = 1;
            foreach (var item in _allBindingList)
                sorters.Add(new Yw.Vmo.Sorter() { ID = sourceObj.ID, SortCode = destObj.SortCode });
                _allBindingList.ForEach(x =>
            {
                sorterList.Add(new Yw.Vmo.Sorter() { ID = item.ID, SortCode = i });
                i++;
                    if (x.SortCode >= destObj.SortCode)
                    {
                        if (x != sourceObj)
                        {
                            sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 });
            }
            if (await _bll.UpdateSorter(sorterList))
                    }
                });
            }
            else if (e.InsertType == InsertType.After)
            {
                this.sysFlagViewModelBindingSource.ResetBindings(false);
                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;
                }
            });
        }
    }
}