using DevExpress.CodeParser; using DevExpress.Data.Extensions; using DevExpress.XtraEditors; using System; using System.ComponentModel; using System.Windows.Forms; namespace IStation.WinFrmUI { /// /// /// public partial class IntegrationFormatParasCtrl : UserControl, IFormatParas { public IntegrationFormatParasCtrl() { InitializeComponent(); } private Model.SignalType.IntegrationFormatParas _model = null; private BindingList _allBindingList = null; //初始化数据 public void Set(string paras) { _model = Model.SignalType.IntegrationFormatParas.ToModel(paras); if (_model == null) _model = new Model.SignalType.IntegrationFormatParas(); if (_model.Items == null) _model.Items = new List(); _allBindingList = new BindingList(_model.Items); this.gridControl1.DataSource = _allBindingList; this.gridControl1.RefreshDataSource(); } //单元格点击事件 private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { if (_allBindingList == null || _allBindingList.Count < 1) return; //删除 var index = this.gridView1.FocusedRowHandle; if (e.Column == this.colDelete) { _allBindingList.RemoveAt(index); } } //新增值时必须先输入名称 private void gridView1_ShowingEditor(object sender, CancelEventArgs e) { if (_allBindingList == null) { e.Cancel = true; return; } if (this.gridView1.FocusedColumn != this.colName) { var row = this.gridView1.GetCurrentViewModel(_allBindingList); if (row == null) { e.Cancel = true; return; } } } //验证 Value 唯一性 private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { if (_allBindingList == null || _allBindingList.Count < 1) return; if (this.gridView1.FocusedColumn == this.colCode) { var row = this.gridView1.GetCurrentViewModel(_allBindingList); var list = _allBindingList.ToList(); list.Remove(row); System.Text.RegularExpressions.Regex rex = new System.Text.RegularExpressions.Regex(@"^\d+$"); if (rex.IsMatch(e.Value.ToString())) if (list.Find(x => x.Code == e.Value.ToString()) != null) { e.ErrorText = "值映射重复"; e.Valid = false; } } } //验证 public bool Valid() { if (_allBindingList == null || _allBindingList.Count < 1) { XtraMessageBox.Show("请输入集成项!"); return false; } return true; } //获取 public string Get() { if (!Valid()) return default; _model.Items = new List(_allBindingList); return _model.ToJson(); } } }