using DevExpress.XtraEditors; using Yw.Untity; namespace ISupply.WinFrm.Main { /// /// /// public partial class RegionTreeListMgr : XtraUserControl { public RegionTreeListMgr() { InitializeComponent(); this.treeList1.InitialDefaultSettings(); this.treeList1.SelectImageList = ImageLib.Lib; this.layoutControl1.SetupLayoutControl(); } public class CurrentViewModel : Model.Region { public CurrentViewModel() { } public CurrentViewModel(Model.Region rhs) : base(rhs) { this.ParentID = TreeParentIdsHelper.GetLastParentID(rhs.ParentIds); this.ImageIndex = ImageLib.GetRegionTypeImageIndex(rhs.Type); } public long ParentID { get; set; } public int ImageIndex { get; set; } } /// /// 聚焦改变事件 /// public event Action FocusedChangedEvent; private BLL.Region _bll = new BLL.Region(); private List _allBindingList = null;//所有绑定列表 /// /// 绑定数据 /// public void Clear() { _allBindingList = new List(); this.treeList1.DataSource = _allBindingList; this.FocusedChangedEvent?.Invoke(null); } /// /// 绑定数据 /// public void SetBindingData() { WaitFrmHelper.ShowWaitForm("正在加载数据..."); _allBindingList = new List(); var list = _bll.GetAll(); if (list != null && list.Count > 0) { foreach (var item in list) { var vm = new CurrentViewModel(item); _allBindingList.Add(vm); } } this.bindingSource1.DataSource = _allBindingList; this.treeList1.ExpandToLevel(1); WaitFrmHelper.HideWaitForm(); } //全部展开 private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.ExpandAll(); } //全部折叠 private void BarBtnCollapseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.CollapseAll(); } //检索 private void barCkSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (this.barCkSearch.Checked) this.treeList1.ShowFindPanel(); else this.treeList1.HideFindPanel(); } //聚焦改变 private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) return; this.FocusedChangedEvent?.Invoke(vm); } //添加 private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_allBindingList == null) return; WaitFrmHelper.ShowWaitForm(); var dlg = new AddRegionDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(); dlg.ReloadDataEvent += (rhs) => { rhs.SortCode = _allBindingList.Where(x => x.ParentID == 0).Max(x => x.SortCode) + 1; rhs.ID = _bll.Insert(rhs); if (rhs.ID > 0) { var vm = new CurrentViewModel(rhs); _allBindingList.Add(vm); this.bindingSource1.ResetBindings(false); return true; } return false; }; dlg.ShowDialog(); } //添加子项 private void barBtnAddChildren_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_allBindingList == null) return; var vmParent = this.treeList1.GetCurrentViewModel(_allBindingList); if (vmParent == null) { XtraMessageBox.Show("请选择数据行!"); return; } WaitFrmHelper.ShowWaitForm(); var dlg = new AddRegionDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(); dlg.ReloadDataEvent += (rhs) => { rhs.ParentIds = TreeParentIdsHelper.GetChildParentIds(vmParent.ID, vmParent.ParentIds); rhs.SortCode = _allBindingList.Count(x => x.ParentID == vmParent.ID) + 1; rhs.ID = _bll.Insert(rhs); if (rhs.ID > 0) { var vm = new CurrentViewModel(rhs); _allBindingList.Add(vm); this.bindingSource1.ResetBindings(false); return true; } return false; }; dlg.ShowDialog(); } //编辑 private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } WaitFrmHelper.ShowWaitForm(); var dlg = new EditRegionDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(vm); dlg.ReloadDataEvent += (rhs) => { var bol = _bll.Update(rhs); if (bol) { vm.Reset(rhs); this.treeList1.RefreshNode(this.treeList1.FocusedNode); } return bol; }; dlg.ShowDialog(); } //删除 private void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } if (XtraMessageBox.Show($"确认删除数据行?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK) return; var result = _bll.DeleteByID(vm.ID, out string msg); if (result) { if (string.IsNullOrEmpty(msg)) { XtraMessageBox.Show($"删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { XtraMessageBox.Show($"删除成功!\n警告:{msg}", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { XtraMessageBox.Show($"删除失败!\n原因:{msg}", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } _allBindingList.Remove(vm); this.bindingSource1.ResetBindings(false); } //详细信息 private void barBtnDetail_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { XtraMessageBox.Show("待补充!"); } /// /// 标签名称 /// private void barBtnUpdateTagName_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } var dlg = new SetTagNameDlg(); dlg.SetBindingData(vm.TagName); dlg.ReloadDataEvent += (tagName) => { var result = _bll.UpdateTagName(vm.ID, tagName); if (result) { vm.TagName = tagName; this.treeList1.RefreshNode(this.treeList1.FocusedNode); } return result; }; dlg.ShowDialog(); } //排序码 private void barBtnUpdateSortCode_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } var dlg = new SetSortCodeDlg(); dlg.SetBindingData(vm.SortCode); dlg.ReloadDataEvent += (sortCode) => { var result = _bll.UpdateSortCode(vm.ID, sortCode); if (result) { vm.SortCode = sortCode; this.bindingSource1.ResetBindings(false); } return result; }; dlg.ShowDialog(); } /// /// 使用状态 /// private void barBtnUpdateUseStatus_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } var dlg = new SetUseStatusDlg(); dlg.SetBindingData(vm.UseStatus); dlg.ReloadDataEvent += (useStatus) => { var result = _bll.UpdateUseStatus(vm.ID, (int)useStatus); if (result) { vm.UseStatus = useStatus; this.treeList1.RefreshNode(this.treeList1.FocusedNode); } return result; }; dlg.ShowDialog(); } } }