using DevExpress.Utils;
|
using DevExpress.Utils.Design;
|
using DevExpress.Utils.DragDrop;
|
using DevExpress.XtraEditors;
|
using DevExpress.XtraTreeList;
|
using DevExpress.XtraTreeList.Nodes;
|
using HStation.Vmo;
|
using System.ComponentModel;
|
using System.Windows.Media.Imaging;
|
using Yw;
|
|
namespace HStation.WinFrmUI
|
{
|
public partial class AssetsCompressorSeriesMgrTreeCtrl : DevExpress.XtraEditors.XtraUserControl
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public AssetsCompressorSeriesMgrTreeCtrl()
|
{
|
InitializeComponent();
|
this.treeList1.InitialDefaultSettings();
|
this.layoutControl1.SetupLayoutControl();
|
this.barBtnAdd.ItemClick += BarBtnAdd_ItemClick;
|
this.barBtnEdit.ItemClick += BarBtnEdit_ItemClick;
|
this.barBtnDelete.ItemClick += BarBtnDelete_ItemClick;
|
this.barBtnInfo.ItemClick += BarBtnInfo_ItemClick;
|
}
|
|
|
/// <summary>
|
/// 聚焦改变事件
|
/// </summary>
|
public event Action<AssetsCompressorSeriesVmo> FocusedChangedEvent;
|
|
/// <summary>
|
/// 所有绑定列表
|
/// </summary>
|
private List<AssetsCompressorSeriesMgrViewModel> _allBindingList = null;
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public async void InitialData()
|
{
|
var overlay = this.ShowOverlay();
|
var allList = await BLLFactory<HStation.BLL.AssetsCompressorSeries>.Instance.GetAll();
|
_allBindingList = new List<AssetsCompressorSeriesMgrViewModel>();
|
allList?.ForEach(x =>
|
{
|
var vm = new AssetsCompressorSeriesMgrViewModel(x);
|
_allBindingList.Add(vm);
|
});
|
this.treeList1.DataSource = _allBindingList;
|
this.treeList1.ForceInitialize();
|
this.treeList1.ExpandAll();
|
overlay.Close();
|
SetDragEnable(this.barCkDrag.Checked);
|
}
|
|
//全部展开
|
private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.treeList1.ExpandAll();
|
}
|
|
//全部折叠
|
private void barBtnCollpseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.treeList1.CollapseAll();
|
}
|
|
//检索(menu)
|
private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (this.layoutControlItem1.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
|
this.layoutControlItem1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
|
else
|
this.layoutControlItem1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
|
}
|
|
//树线
|
private void barCkTreeLine_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.treeList1.OptionsView.ShowTreeLines = this.barCkTreeLine.Checked ? DefaultBoolean.True : DefaultBoolean.False;
|
}
|
|
//聚焦节点改变
|
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
|
{
|
var vm = this.treeList1.GetDataRecordByNode(e.Node) as AssetsCompressorSeriesMgrViewModel;
|
this.FocusedChangedEvent?.Invoke(vm.Vmo);
|
}
|
|
//刷新
|
private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
InitialData();
|
}
|
|
//右键菜单
|
private void treeList1_MouseClick(object sender, MouseEventArgs e)
|
{
|
if (e.Button != MouseButtons.Right)
|
{
|
return;
|
}
|
_calcHitInfo = this.treeList1.CalcHitInfo(e.Location);
|
this.popupMenu1.ShowPopup(MousePosition);
|
}
|
private TreeListHitInfo _calcHitInfo = null;
|
|
//右键菜单弹出前验证
|
private void popupMenu1_BeforePopup(object sender, CancelEventArgs e)
|
{
|
if (_calcHitInfo == null)
|
{
|
return;
|
}
|
if (_calcHitInfo.InRow)
|
{
|
this.barBtnAdd.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
|
this.barBtnEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
|
this.barBtnDelete.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
|
this.barBtnInfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
|
}
|
else
|
{
|
this.barBtnAdd.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
|
this.barBtnEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
|
this.barBtnDelete.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
|
this.barBtnInfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
|
}
|
}
|
|
//获取当前
|
private AssetsCompressorSeriesMgrViewModel GetCurrentViewModel()
|
{
|
if (_allBindingList == null)
|
{
|
TipFormHelper.ShowError("数据初始化错误!");
|
return null;
|
}
|
if (_allBindingList.Count < 1)
|
{
|
TipFormHelper.ShowInfo("无数据!");
|
return null;
|
}
|
var vm = this.treeList1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
TipFormHelper.ShowWarn("请选择数据行!");
|
return null;
|
}
|
return vm;
|
}
|
|
//添加
|
private void Add()
|
{
|
if (_allBindingList == null)
|
{
|
TipFormHelper.ShowError("数据初始化失败!");
|
return;
|
}
|
if (_calcHitInfo == null)
|
{
|
return;
|
}
|
long parentId = 0;
|
if (_calcHitInfo.InRow)
|
{
|
var vm = this.treeList1.GetCurrentViewModel(_allBindingList);
|
if (vm != null)
|
{
|
parentId = vm.ID;
|
}
|
}
|
var dlg = new AddAssetsCompressorSeriesDlg();
|
dlg.ReloadDataEvent += (rhs) =>
|
{
|
var vm = new AssetsCompressorSeriesMgrViewModel(rhs);
|
_allBindingList.Add(vm);
|
this.treeList1.RefreshDataSource();
|
TipFormHelper.ShowSucceed("添加成功!");
|
};
|
dlg.SetBindingData(parentId);
|
dlg.ShowDialog();
|
}
|
|
//编辑
|
private void Edit()
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
var dlg = new EditAssetsCompressorSeriesDlg();
|
dlg.ReloadDataEvent += (rhs) =>
|
{
|
vm.Reset(rhs);
|
this.treeList1.RefreshNode(this.treeList1.FocusedNode);
|
TipFormHelper.ShowSucceed("更新成功");
|
};
|
dlg.SetBindingData(vm.Vmo);
|
dlg.ShowDialog();
|
}
|
|
//删除
|
private async void Delete()
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
var result = XtraMessageBox.Show("请问确认删除当前数据吗?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes;
|
if (!result)
|
{
|
return;
|
}
|
var bol = await BLLFactory<HStation.BLL.AssetsCompressorSeries>.Instance.DeleteByID(vm.ID);
|
if (!bol)
|
{
|
TipFormHelper.ShowError("删除失败!");
|
return;
|
}
|
_allBindingList.Remove(vm);
|
this.treeList1.RefreshDataSource();
|
TipFormHelper.ShowSucceed("删除成功!");
|
}
|
|
//查看
|
private void View()
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
var dlg = new ViewAssetsCompressorSeriesDlg();
|
dlg.SetBindingData(vm.Vmo);
|
dlg.ShowDialog();
|
}
|
|
//添加
|
private void BarBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
Add();
|
}
|
|
//编辑
|
private void BarBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
Edit();
|
}
|
|
//详细信息
|
private void BarBtnInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
View();
|
}
|
|
//删除
|
private void BarBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
Delete();
|
}
|
|
#region 拖拽
|
|
private async void dragDropEvents1_DragDrop(object sender, DevExpress.Utils.DragDrop.DragDropEventArgs e)
|
{
|
var nodes = e.Data as List<TreeListNode>;
|
if (nodes == null || nodes.Count < 1)
|
{
|
e.Handled = true;
|
return;
|
}
|
var sourceNode = nodes[0];
|
var sourceNodeObj = this.treeList1.GetDataRecordByNode(sourceNode) as AssetsCompressorSeriesMgrViewModel;
|
if (sourceNodeObj == null)
|
{
|
e.Handled = true;
|
return;
|
}
|
var destNode = this.treeList1.GetNodeByCP(e.Location);
|
if (destNode == null)
|
{
|
e.Handled = true;
|
return;
|
}
|
var destNodeObj = this.treeList1.GetDataRecordByNode(destNode) as AssetsCompressorSeriesMgrViewModel;
|
if (destNode == null)
|
{
|
e.Handled = true;
|
return;
|
}
|
|
long id = sourceNodeObj.ID;
|
long parentId = 0;
|
int sortCode = 0;
|
|
var sorters = new List<Yw.Vmo.Sorter>();
|
|
if (e.InsertType == InsertType.Before)
|
{
|
parentId = destNodeObj.ParentID;
|
sortCode = destNodeObj.SortCode;
|
_allBindingList.ForEach(x =>
|
{
|
if (x.ParentID == destNodeObj.ParentID)
|
{
|
if (x.SortCode >= destNodeObj.SortCode)
|
{
|
if (x != sourceNodeObj)
|
{
|
sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 });
|
}
|
}
|
}
|
});
|
}
|
else if (e.InsertType == InsertType.After)
|
{
|
parentId = destNodeObj.ParentID;
|
sortCode = destNodeObj.SortCode + 1;
|
_allBindingList.ForEach(x =>
|
{
|
if (x.ParentID == destNodeObj.ParentID)
|
{
|
if (x.SortCode > destNodeObj.SortCode)
|
{
|
if (x != sourceNodeObj)
|
{
|
sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 });
|
}
|
}
|
}
|
});
|
}
|
else if (e.InsertType == InsertType.AsChild)
|
{
|
parentId = destNodeObj.ID;
|
var allChildList = _allBindingList.Where(x => x.ParentID == destNodeObj.ParentID).ToList();
|
sortCode = allChildList.Count < 1 ? 1 : allChildList.Max(x => x.SortCode) + 1;
|
}
|
else
|
{
|
e.Handled = true;
|
return;
|
}
|
|
var bll = BLLFactory<HStation.BLL.AssetsCompressorSeries>.Instance;
|
var bol = await bll.UpdateTreeSortCode(id, parentId, sortCode);
|
if (!bol)
|
{
|
e.Handled = true;
|
return;
|
}
|
if (sorters != null && sorters.Count > 0)
|
{
|
bol = await bll.UpdateSorter(sorters);
|
if (!bol)
|
{
|
e.Handled = true;
|
return;
|
}
|
}
|
|
_allBindingList.ForEach(x =>
|
{
|
if (x.ID == id)
|
{
|
x.ParentID = parentId;
|
x.SortCode = sortCode;
|
}
|
if (sorters.Count > 0)
|
{
|
var sorter = sorters.Find(t => t.ID == x.ID);
|
if (sorter != null)
|
{
|
x.SortCode = sorter.SortCode;
|
}
|
}
|
});
|
}
|
|
//拖拽排序
|
private void barCkDrag_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.SetDragEnable(this.barCkDrag.Checked);
|
}
|
|
//设置拖动可用性
|
private void SetDragEnable(bool allowDrag)
|
{
|
var be = this.behaviorManager1.GetBehavior<DevExpress.Utils.DragDrop.DragDropBehavior>(this.treeList1);
|
be.Properties.AllowDrag = allowDrag;
|
}
|
|
#endregion
|
|
|
}
|
}
|