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<Model.EnumDisplay> _allBindingList = null;
|
|
/// <summary>
|
/// 设置
|
/// </summary>
|
public void Set(string json)
|
{
|
this.gridView1.SetBindingNormalEditView();
|
_allBindingList = new BindingList<Model.EnumDisplay>();
|
var dict = JsonHelper.Json2Object<Dictionary<int, string>>(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);
|
}
|
|
/// <summary>
|
/// 验证
|
/// </summary>
|
public bool Valid(out string msg)
|
{
|
msg = string.Empty;
|
if (_allBindingList == null)
|
return false;
|
if (_allBindingList.Count < 1)
|
{
|
msg = "未设置枚举映射";
|
return false;
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 获取
|
/// </summary>
|
public string Get()
|
{
|
if (_allBindingList == null || _allBindingList.Count < 1)
|
return string.Empty;
|
var dict = new Dictionary<int, string>();
|
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
|
|
}
|
}
|