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();
}
}
}