using DevExpress.XtraEditors; using Yw; namespace HStation.WinFrmUI.Basic { /// /// /// public partial class SysModuleListBoxCtrl : XtraUserControl { public SysModuleListBoxCtrl() { InitializeComponent(); this.listBoxControl1.InitialDefaultSettings(); } /// /// 聚焦改变事件 /// public event Action FocusedChangedEvent; private List _allBindingList = null; private Yw.BLL.SysModule _bll = null; /// /// 绑定数据 /// public void Clear() { this.FocusedChangedEvent?.Invoke(default); } /// /// 绑定数据 /// public async void SetBindingData() { _allBindingList = new List(); _bll = new Yw.BLL.SysModule(); var alllist = await _bll.GetAll(); foreach (var item in alllist) { _allBindingList.Add(new SysModuleViewModel(item)); } this.listBoxControl1.DataSource = _allBindingList; this.listBoxControl1.DisplayMember = "Name"; } //聚焦改变 private void listBoxControl1_SelectedIndexChanged(object sender, EventArgs e) { var currentID = this.GetCurrentID(); if (currentID <= 0) { return; } FocusedChangedEvent.Invoke(currentID); } #region 菜单事件 //检索 private void barCkSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (this.barCkSearch.Checked) layoutControlItemSearch.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; else layoutControlItemSearch.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; } #endregion 菜单事件 //获取当前选中id public long GetCurrentID() { var currentVm = this.listBoxControl1.GetCurrentViewModel(_allBindingList); if (currentVm == null) { return default; } return currentVm.ID; } //添加 private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var dlg = new AddSysMoudleDlg(); dlg.ReloadDataEvent += async (rhs) => { var id = await _bll.Insert(rhs); if (id > 0) { var model = await _bll.GetByID(id); _allBindingList.Add(new SysModuleViewModel(model)); this.moduleViewModelBindingSource.ResetBindings(false); return true; } return false; }; dlg.ShowDialog(); } //编辑 private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.listBoxControl1.GetCurrentViewModel(_allBindingList); var dlg = new EditSysMoudleDlg(); if (vm == null) { MessageBoxHelper.ShowError("请选择数据换!"); return; } dlg.SetBindingData(vm.ID); dlg.ReloadDataEvent += async (rhs) => { if (await _bll.Update(rhs)) { vm.Reset(rhs); this.moduleViewModelBindingSource.ResetBindings(false); return true; } return false; }; dlg.ShowDialog(); } //删除 private async void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var currentVm = this.listBoxControl1.GetCurrentViewModel(_allBindingList); if (currentVm == null) { MessageBoxHelper.ShowWarning("请选择数据行!"); return; } if (MessageBoxHelper.IsClickOk("确认删除数据行?", "提示")) return; var result = await BLLFactory.Instance.DeleteByID(currentVm.ID); if (result) { _allBindingList.Remove(currentVm); MessageBoxHelper.ShowSuccess("删除成功!"); this.moduleViewModelBindingSource.ResetBindings(false); return; } else { MessageBoxHelper.ShowError($"删除失败!"); return; } } private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.SetBindingData(); } } }