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; } } } }