namespace Yw.WinFrmUI { /// /// /// public partial class SetParasGridCtrl : DevExpress.XtraEditors.XtraUserControl { /// /// /// public SetParasGridCtrl() { InitializeComponent(); this.gridView1.SetBindingLimitEditView(); } private BindingList _allBindingList = null; /// /// 绑定数据 /// public void SetBindingData(Dictionary dict) { _allBindingList = new BindingList(); if (dict != null && dict.Count > 0) { foreach (var item in dict) { _allBindingList.Add(new ParasItemViewModel() { PropName = item.Key, PropValue = item.Value }); } } this.parasItemViewModelBindingSource1.DataSource = _allBindingList; this.parasItemViewModelBindingSource1.ResetBindings(false); } /// /// 获取参数 /// public Dictionary GetParas() { var dict = new Dictionary(); if (_allBindingList != null && _allBindingList.Count > 0) { foreach (var item in _allBindingList) { if (!string.IsNullOrEmpty(item.PropName)) { if (!dict.ContainsKey(item.PropName)) { dict.Add(item.PropName, item.PropValue); } } } } return dict; } //自定义下拉框 private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) { if (e.Column == this.colPropName) { } } //初始化 private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e) { if (_allBindingList == null) { return; } var row = this.gridView1.GetRow(e.RowHandle) as ParasItemViewModel; if (row != null) { row.PropValue = string.Empty; } } //编辑框显示 private void gridView1_ShowingEditor(object sender, CancelEventArgs e) { if (_allBindingList == null) { e.Cancel = true; return; } var row = this.gridView1.GetFocusedRow() as ParasItemViewModel; if (row == null) { var col = this.gridView1.FocusedColumn; if (col != this.colPropName) { e.Cancel = true; return; } } } //删除 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 ParasItemViewModel; if (row != null) { _allBindingList?.Remove(row); } } } //验证 private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { if (_allBindingList == null) { return; } var row = this.gridView1.GetFocusedRow() as ParasItemViewModel; if (row != null) { var col = this.gridView1.FocusedColumn; if (col == this.colPropName) { if (e.Value != null) { var propName = e.Value.ToString(); var count = _allBindingList.Count(x => x.PropName == propName && x != row); if (count > 0) { e.Valid = false; e.ErrorText = "重复"; } } } } } } }