using DevExpress.XtraEditors;
using System.ComponentModel;
namespace HStation.WinFrmUI.Xhs.PumpProduct
{
///
///
///
public partial class PumpProductSeriesTreeListCtrl : XtraUserControl
{
public PumpProductSeriesTreeListCtrl()
{
InitializeComponent();
this.treeList1.InitialDefaultSettings();
this.treeList1.SelectImageList = ImageLib.Lib;
}
///
/// 聚焦改变事件
///
public event Action FocusedChangedEvent;
private BindingList _allBindingList = null;//所有绑定列表
private BLL.PumpSeries _seriesbll = null;
private BLL.PumpGroup _groupbll = null;
///
/// 绑定数据
///
public void Clear()
{
_allBindingList = new BindingList();
this.treeList1.DataSource = _allBindingList;
this.FocusedChangedEvent?.Invoke(default, default);
}
///
/// 绑定数据
///
public async void SetBindingData()
{
_seriesbll = new BLL.PumpSeries();
_groupbll = new BLL.PumpGroup();
_allBindingList = new BindingList();
var allseries = await _seriesbll.GetAll();
var allgroup = await _groupbll.GetAll();
foreach (var item in allseries)
{
var vm = new CurrentTreeViewModel(item);
_allBindingList.Add(vm);
}
foreach (var item in allgroup)
{
var vm = new CurrentTreeViewModel(item);
_allBindingList.Add(vm);
}
this.treeList1.DataSource = _allBindingList;
this.treeList1.RefreshDataSource();
}
//聚焦改变
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
var vm = this.treeList1.GetCurrentViewModel(_allBindingList);
if (vm != null)
{
var series = vm.Model as PumpSeriesDto;
if (series != null)
{
this.FocusedChangedEvent?.Invoke(series.ID, true);
}
else
{
var group = vm.Model as PumpGroupDto;
if (group != null)
{
this.FocusedChangedEvent?.Invoke(group.ID, false);
}
}
}
}
#region 菜单事件
//检索
private void barCkSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (this.barCkSearch.Checked)
this.treeList1.ShowFindPanel();
else
this.treeList1.HideFindPanel();
}
#endregion 菜单事件
//添加
private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_allBindingList == null)
return;
var currentVm = this.treeList1.GetCurrentViewModel(_allBindingList);
var dlg = new AddPumpProductSeriesDlg();
dlg.ReloadDataEvent += async (model) =>
{
var allchildList = await _seriesbll.GetAll();
model.SortCode = allchildList.Count == 0 ? 1 : allchildList.Max(x => x.SortCode) + 1;
var id = await _seriesbll.Insert(model);
if (id > 0)
{
var vm = await _seriesbll.GetByID(id);
_allBindingList.Add(new CurrentTreeViewModel(vm));
return true;
}
return false;
};
dlg.ShowDialog();
}
//全部折叠
private void barBtnCollapseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.treeList1.CollapseAll();
}
//全部展开
private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.treeList1.ExpandAll();
}
//编辑
private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var currentVm = this.treeList1.GetCurrentViewModel(_allBindingList);
if (currentVm.IsGroup == false)
{
var series = currentVm.Model as Model.PumpSeries;
var dlg = new EditPumpProductSeriesDlg();
dlg.SetBindingData(currentVm.ID);
dlg.ReloadDataEvent += async (model) =>
{
if (await _seriesbll.Update(model))
{
currentVm.Reset(model);
this.treeList1.RefreshDataSource();
return true;
}
return false;
};
dlg.ShowDialog();
}
else
{
var dlg = new EditPumpProductGroupDlg();
dlg.SetBindingData(currentVm.ID);
dlg.ReloadDataEvent += async (model) =>
{
if (await _groupbll.Update(model))
{
currentVm.Reset(model);
this.treeList1.RefreshDataSource();
return true;
}
return false;
};
dlg.ShowDialog();
}
}
//删除
private void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var currentVm = this.treeList1.GetCurrentViewModel(_allBindingList);
if (currentVm == null)
{
MessageBoxHelper.ShowWarning("请选择数据行!");
return;
}
if (MessageBoxHelper.IsClickOk($"确认删除数据行?", "提示"))
return;
if (currentVm.IsGroup)
{
var groupresult = _groupbll.DeleteEx(currentVm.ID);
if (groupresult)
{
_allBindingList.Remove(currentVm);
}
else
{
MessageBoxHelper.ShowError($"删除失败!");
return;
}
}
else
{
var result = _seriesbll.DeleteEx(currentVm.ID);
if (result)
{
_allBindingList.Remove(currentVm);
var children = _allBindingList.Where(x => x.ParentID == currentVm.ID).ToList();
foreach (var child in children)
{
_allBindingList.Remove(child);
}
MessageBoxHelper.ShowSuccess($"删除成功!");
this.treeList1.Refresh();
return;
}
else
{
MessageBoxHelper.ShowError($"删除失败!");
return;
}
}
}
//添加子项
private void barBtnAddChild_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var currentVm = this.treeList1.GetCurrentViewModel(_allBindingList);
if (currentVm == null)
{
MessageBoxHelper.ShowWarning("请选择数据行!");
return;
}
if (_allBindingList == null)
return;
var dlg = new AddPumpProductGroupDlg();
dlg.SetBindingData(currentVm.ID);
dlg.ReloadDataEvent += async (model) =>
{
var allchildList = await _groupbll.GetAll();
model.SortCode = allchildList.Count == 0 ? 1 : allchildList.Max(x => x.SortCode) + 1;
var id = await _groupbll.Insert(model);
if (id > 0)
{
var vm = await _groupbll.GetByID(id);
_allBindingList.Add(new CurrentTreeViewModel(vm));
this.treeList1.Refresh();
return true;
}
return false;
};
dlg.ShowDialog();
}
public long GetCurrentID()
{
var currentVm = this.treeList1.GetCurrentViewModel(_allBindingList);
if (currentVm == null)
{
MessageBoxHelper.ShowWarning("请选择数据行!");
return default;
}
if (currentVm.IsGroup)
{
return currentVm.ParentID;
}
else
{
return currentVm.ID;
}
}
public long GetCurrentGroupID()
{
var currentVm = this.treeList1.GetCurrentViewModel(_allBindingList);
if (currentVm == null)
{
MessageBoxHelper.ShowWarning("请选择数据行!");
return default;
}
if (currentVm.IsGroup)
{
return currentVm.ID;
}
else
{
return default;
}
}
}
}