using System.Collections.Generic; using System.ComponentModel; using System.Linq; namespace IStation.WinFrmUI.Basic { public partial class SetEnumValueSettingsCtrl : DevExpress.XtraEditors.XtraUserControl { public SetEnumValueSettingsCtrl() { InitializeComponent(); } private BindingList _allBindingList = null; /// /// 设置 /// public void Set(string json) { this.gridView1.SetBindingNormalEditView(); _allBindingList = new BindingList(); var dict = JsonHelper.Json2Object>(json); if (dict != null && dict.Count > 0) { foreach (var item in dict) { _allBindingList.Add(new Model.EnumDisplay(item.Key, item.Value)); } } this.bindingSource1.DataSource = _allBindingList; this.bindingSource1.ResetBindings(false); } /// /// 验证 /// public bool Valid(out string msg) { msg = string.Empty; if (_allBindingList == null) return false; if (_allBindingList.Count < 1) { msg = "未设置枚举映射"; return false; } return true; } /// /// 获取 /// public string Get() { if (_allBindingList == null || _allBindingList.Count < 1) return string.Empty; var dict = new Dictionary(); foreach (var item in _allBindingList) { dict.Add(item.EnumValue, item.DisplayName); } return Model.SignalType.ToEnumValueSettings(dict); } #region gridview private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e) { //if (_allAxisLabels == null) // return; //var row = this.gridView1.GetRow(e.RowHandle) as Entity.SignalBase.AxisLabel; } //点击删除列进行删除 private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { if (_allBindingList == null) return; if (e.Column == this.colDelete) { var row = this.gridView1.GetFocusedRow() as Model.EnumDisplay; if (row == null) return; _allBindingList.Remove(row); } } //新增时必须先输入名称 private void gridView1_ShowingEditor(object sender, CancelEventArgs e) { if (_allBindingList == null) { e.Cancel = true; return; } if (this.gridView1.FocusedColumn != this.colDispName) { var model = this.gridView1.GetFocusedRow() as Model.EnumDisplay; if (model == null) { e.Cancel = true; return; } } } //当名称列为空时删除该行 private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { if (_allBindingList == null) return; var row = this.gridView1.GetRow(e.RowHandle) as Model.EnumDisplay; if (row == null) return; if (string.IsNullOrEmpty(row.DisplayName)) { _allBindingList.Remove(row); } } //验证枚举值的唯一性 private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { if (_allBindingList == null) return; if (this.gridView1.FocusedColumn == this.colEnumValue) { if (e.Value == null) return; var row = this.gridView1.GetFocusedRow() as Model.EnumDisplay; var list = _allBindingList.ToList(); list.Remove(row); if (list.Find(x => x.EnumValue.ToString() == e.Value.ToString()) != null) { e.ErrorText = "枚举值重复"; e.Valid = false; } } } //聚焦行改变控制排序按钮的可用性 private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { } #endregion } }