using DevExpress.XtraEditors.Repository; namespace Yw.WinFrmUI { public partial class SetHydroGradingModelCtrl : DevExpress.XtraEditors.XtraUserControl { public SetHydroGradingModelCtrl() { InitializeComponent(); this.gridView1.SetBindingLimitEditView(); } private long _modelId;//模型id private string _catalog;//分类 private string _propName;//属性名称 private List _allList = null; private BindingList _allBindingList = null; /// /// 初始化数据 /// public void InitialData(List allList) { _allList = new List(); allList?.ForEach(x => { _allList.Add(new SetHydroGradingModelViewModel(x)); }); } /// /// 绑定数据 /// public void SetBindingData(long modelId, string catalog, string propName) { _modelId = modelId; _catalog = catalog; _propName = propName; _allBindingList = new BindingList(); var list = _allList?.Where(x => x.ModelID == modelId && x.Catalog == catalog && x.PropName == propName).OrderBy(x => x.SortCode).ToList(); list?.ForEach(x => { _allBindingList.Add(x); }); this.setHydroGradingModelViewModelBindingSource.DataSource = _allBindingList; this.setHydroGradingModelViewModelBindingSource.ResetBindings(false); ResetColumns(); } /// /// 重新绑定数据 /// public void ResetBindingData() { SetBindingData(_modelId, _catalog, _propName); } //设置列 private void ResetColumns() { switch (_propName) { case Yw.Hydro.ParterProp.LinkStatus: { ResetColumns(false); } break; case HydroVisualCalcuProp.CalcuPress: { ResetColumns(true); } break; case HydroVisualCalcuProp.CalcuHead: { ResetColumns(true); } break; case HydroVisualCalcuProp.CalcuFlow: { ResetColumns(true); } break; case HydroVisualCalcuProp.CalcuVelocity: { ResetColumns(true); } break; case HydroVisualCalcuProp.CalcuHeadLoss: { ResetColumns(true); } break; default: { } break; } } //设置列 private void ResetColumns(bool numeric) { this.colSetValue.Visible = false; this.colMinValue.Visible = false; this.colMaxValue.Visible = false; this.colColor.Visible = false; this.colDelete.Visible = false; this.colSetValue.Visible = !numeric; this.colMinValue.Visible = numeric; this.colMaxValue.Visible = numeric; this.colColor.Visible = true; this.colDelete.Visible = true; } /// /// 获取评级 /// public List GetGrading() { var list = new List(); _allList?.ForEach(x => { var vmo = new Yw.Vmo.HydroGradingVmo() { ID = x.ID, ModelID = x.ModelID, Catalog = x.Catalog, PropName = x.PropName, SetValue = x.SetValue, MinValue = x.MinValue, MaxValue = x.MaxValue, Color = ColorTranslator.ToHtml(x.Color), SortCode = x.SortCode, Description = x.Description }; list.Add(vmo); }); return list; } //自定义下拉框 private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) { if (e.Column == this.colSetValue) { switch (_propName) { case Yw.Hydro.ParterProp.LinkStatus: { var repositoryItem = new RepositoryItemImageComboBox(); switch (_catalog) { case Yw.Hydro.ParterCatalog.Pipe: { repositoryItem.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Open), Yw.Hydro.LinkStatus.Open, -1); repositoryItem.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Closed), Yw.Hydro.LinkStatus.Closed, -1); repositoryItem.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.CV), Yw.Hydro.LinkStatus.CV, -1); } break; case Yw.Hydro.ParterCatalog.Pump: { repositoryItem.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Open), Yw.Hydro.LinkStatus.Open, -1); repositoryItem.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Closed), Yw.Hydro.LinkStatus.Closed, -1); } break; case Yw.Hydro.ParterCatalog.Valve: { repositoryItem.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.None), Yw.Hydro.LinkStatus.None, -1); repositoryItem.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Open), Yw.Hydro.LinkStatus.Open, -1); repositoryItem.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Closed), Yw.Hydro.LinkStatus.Closed, -1); } break; default: break; } e.RepositoryItem = repositoryItem; } break; default: break; } } } //初始化 private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e) { var row = this.gridView1.GetRow(e.RowHandle) as SetHydroGradingModelViewModel; if (row != null) { row.ModelID = _modelId; row.Catalog = _catalog; row.PropName = _propName; row.SortCode = _allBindingList == null || _allBindingList.Count < 1 ? 1 : _allBindingList.Max(x => x.SortCode) + 1; _allList.Add(row); } } //编辑框显示 private void gridView1_ShowingEditor(object sender, CancelEventArgs e) { if (string.IsNullOrEmpty(_propName)) { e.Cancel = true; } } //删除 private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { if (e.Column == this.colDelete) { var row = this.gridView1.GetRow(e.RowHandle) as SetHydroGradingModelViewModel; if (row != null) { _allBindingList?.Remove(row); _allList?.Remove(row); } } } } }