using DevExpress.XtraEditors; namespace ISupply.WinFrm.Main { public partial class FacilitiesMgr : DocumentPage { public FacilitiesMgr() { InitializeComponent(); this.PageTitle.Caption = "设施"; this.gridView1.SetNormalView(); this.gridView1.RegistCustomDrawRowIndicator(100); this.buildingExTreeListCtrl1.FocusedChangedEvent += BuildingTreeListCtrl1_FocusedChangedEvent; } public class CurrentViewModel : Model.Facilities { public CurrentViewModel() { } public CurrentViewModel(Model.Facilities rhs) : base(rhs) { } } private Model.Building _belong = null; private BLL.Facilities _bll = new BLL.Facilities(); private List _allBindingList = null; /// /// 初始化数据 /// public override void InitialDataSource() { this.buildingExTreeListCtrl1.SetBindingData(); } //建筑物变换 private void BuildingTreeListCtrl1_FocusedChangedEvent(Model.Building obj) { _belong = obj; SetBindingData(obj); } /// ///绑定数据 /// public void SetBindingData(Model.Building model) { _allBindingList = new List(); if (model != null) { var list = _bll.GetByBuildingID(model.ID); if (list != null && list.Count > 0) { foreach (var item in list) { var vm = new CurrentViewModel(item); _allBindingList.Add(vm); } } } this.currentViewModelBindingSource.DataSource = _allBindingList; this.gridView1.BestFitColumns(); } #region 事件 /// /// 添加 /// private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_belong == null) return; if (_allBindingList == null) return; var dlgWizard = new FacilitiesWizard(_belong.ID); if (dlgWizard.ShowDialog() == DialogResult.OK) { InitialDataSource(); }; //WaitFrmHelper.ShowWaitForm(); //var dlg = new AddFacilitiesDlg(); //dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; //dlg.SetBindingData(); //dlg.ReloadDataEvent += (rhs) => //{ // rhs.BuildingID = _belong.ID; // rhs.SortCode = _allBindingList.Count == 0 ? 1 : _allBindingList.Max(x => x.SortCode) + 1; // rhs.ID = _bll.Insert(rhs); // if (rhs.ID > 0) // { // var vm = new CurrentViewModel(rhs); // _allBindingList.Add(vm); // this.currentViewModelBindingSource.ResetBindings(false); // return true; // } // return false; //}; //dlg.ShowDialog(); } /// /// 编辑 /// private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.gridView1.GetCurrentViewModel(_allBindingList); if (vm == null) { XtraMessageBox.Show("请选择数据行!"); return; } WaitFrmHelper.ShowWaitForm(); var dlg = new EditFacilitiesDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(vm); dlg.ReloadDataEvent += (rhs) => { var bol = _bll.Update(rhs); if (bol) { vm.Reset(rhs); this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); } return bol; }; dlg.ShowDialog(); } /// /// 删除 /// private void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.gridView1.GetCurrentViewModel(_allBindingList); if (vm == null) return; if (XtraMessageBox.Show($"确认删除数据行?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) != DialogResult.OK) return; var result = new BLL.Facilities().DeleteByID(vm.ID, out string msg); if (!result) { XtraMessageBox.Show($"删除失败!\n原因:{msg}", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Data\\Inp\\" + vm.ID + ".inp"); File.Delete(filePath); if (!string.IsNullOrEmpty(msg)) XtraMessageBox.Show($"删除成功!\n警告:{msg}", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); else XtraMessageBox.Show($"删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); _allBindingList.Remove(vm); this.currentViewModelBindingSource.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.gridView1.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.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); } return result; }; dlg.ShowDialog(); } /// /// 排序码 /// private void barBtnUpdateSortCode_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.gridView1.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.currentViewModelBindingSource.ResetBindings(false); } return result; }; dlg.ShowDialog(); } /// /// 使用状态 /// private void barBtnUpdateUseStatus_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.gridView1.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.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); } return result; }; dlg.ShowDialog(); } /// /// 检索 /// private void barCekSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (this.gridView1.IsFindPanelVisible) this.gridView1.HideFindPanel(); else this.gridView1.ShowFindPanel(); } /// /// 刷新数据 /// private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { SetBindingData(_belong); } #endregion } }