using DevExpress.Utils; using DevExpress.XtraCharts; using System.Windows.Media.Imaging; namespace PBS.WinFrmUI.Hydro { public partial class ModelTemplateTreeListCtrl : DevExpress.XtraEditors.XtraUserControl { public ModelTemplateTreeListCtrl() { InitializeComponent(); this.treeList1.InitialDefaultSettings(); this.layoutControl1.SetupLayoutControl(); } /// /// 选择项目事件 /// public event Action SelectModelTemplateEvent; /// /// 刷新数据事件 /// public event Action RefreshDataEvent; /// /// 菜单栏可见性 /// public bool MenuBarVisible { get => this.bar1.Visible; set=>this.bar1.Visible=value; } private List _allBindingList = new(); /// /// 绑定数据 /// public async void SetBindingData(List allModelTemplateList) { _allBindingList = new List(); if (allModelTemplateList != null) { foreach (var item in allModelTemplateList) { if (await IsHaveInp(item.ID)) { var vm = new ModelTemplateTreeViewModel(item, true); _allBindingList.Add(vm); } else { var vm = new ModelTemplateTreeViewModel(item, false); _allBindingList.Add(vm); } } } this.treeList1.DataSource = _allBindingList; this.treeList1.ForceInitialize(); this.treeList1.ExpandAll(); } //查找模板是否存在模型 private async Task IsHaveInp(long ModelTemplateID) { return true; } /// /// 设置默认 /// public void SetFocused() { if (_allBindingList == null) { return; } var vm = _allBindingList.FirstOrDefault(); if (vm != null) { this.treeList1.FocusedNode = this.treeList1.FindNodeByKeyID(vm.ID); } } /// /// 设置聚焦 /// public void SetFocused(long ID) { if (_allBindingList == null) { return; } this.treeList1.FocusedNode = this.treeList1.FindNodeByKeyID(ID); } /// /// 添加模型模板 /// public void AddModelTemplate() { if (_allBindingList == null) { return; } var dlg = new AddModelTemplateDlg(); dlg.SetBindingData(); dlg.ReloadDataEvent += (rhs) => { var vm = new ModelTemplateTreeViewModel(rhs, true); _allBindingList.Add(vm); this.treeList1.RefreshDataSource(); SetFocused(vm.ID); TipFormHelper.ShowSucceed("模型模板添加成功!"); }; dlg.ShowDialog(); } /// /// 更新模型模板 /// public void UpdateModelTemplate() { if (_allBindingList == null) { return; } var vm = this.treeList1.GetFocusedRow() as ModelTemplateTreeViewModel; if (vm == null) { return; } var dlg = new EditModelTemplateDlg(); dlg.SetBindingData(vm.ModelTemplate); dlg.ReloadDataEvent += (rhs) => { vm.Name = rhs.Name; vm.Description=rhs.Description; vm.ModelTemplate = rhs; this.treeList1.RefreshNode(this.treeList1.FocusedNode); TipFormHelper.ShowSucceed("模型模板更新成功!"); }; dlg.ShowDialog(); } /// /// 保存模型模板 /// public async void SaveModelTemplate(PBS.Vmo.ModelTemplateVmo vmo) { if (_allBindingList == null) { return ; } var vm = _allBindingList.Find(x => x.ID == vmo.ID); if (vm == null) { return ; } var bol = await BLLFactory.Instance.Update(vmo); if (!bol) { TipFormHelper.ShowError("保存失败!"); return ; } vm.Name = vmo.Name; vm.Description = vmo.Description; vm.ModelTemplate = await BLLFactory.Instance.GetByID(vmo.ID); this.treeList1.RefreshNode(this.treeList1.FocusedNode); TipFormHelper.ShowSucceed("模型模板保存成功!"); } /// /// 删除模型模板 /// public async void DeleteModelTemplate() { var bol = XtraMessageBox.Show("请问是否删除当前模型模板?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes; if (!bol) { return; } var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { TipFormHelper.ShowWarn("请选择数据行!"); return; } // 需增加删除模型模板映射设施的逻辑 //.... if (!await BLLFactory.Instance.DeleteByID(vm.ID)) { TipFormHelper.ShowError("模型模板删除失败,请重试!"); return; } TipFormHelper.ShowSucceed("模型模板删除成功!"); _allBindingList.Remove(vm); this.treeList1.RefreshDataSource(); } //全部展开 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.treeList1.IsFindPanelVisible==false) this.treeList1.ShowFindPanel(); else this.treeList1.HideFindPanel(); } //树线 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 ModelTemplateTreeViewModel; this.SelectModelTemplateEvent?.Invoke(vm?.ModelTemplate); } //刷新 private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.RefreshDataEvent?.Invoke(); } } }