using DevExpress.XtraEditors;
|
using IStation.Unit;
|
using System;
|
using System.Data;
|
using System.Linq;
|
using System.Windows.Forms;
|
|
namespace IStation.WinFrmUI.Basic
|
{
|
public partial class EditNumericSignalTypeDlg : DevExpress.XtraEditors.XtraForm
|
{
|
public EditNumericSignalTypeDlg()
|
{
|
InitializeComponent();
|
this.IconOptions.Icon = WinFrmUI.Properties.Resources.App;
|
this.dataLayoutControl1.SetupLayoutControl();
|
InitialUI_UnitType();
|
}
|
|
/// <summary>
|
/// 验证标识的唯一性事件
|
/// </summary>
|
public event Func<long, string, bool> ValidIdentifierUniqueEvent;
|
/// <summary>
|
/// 返回数据事件
|
/// </summary>
|
public event Action<Model.SignalType> ReloadDataEvent;
|
|
private Model.SignalType _model = null;//当前操作对象
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
/// <param name="rhs"></param>
|
public void SetBindingData(Model.SignalType rhs)
|
{
|
this.Text = "编辑数值信息类型";
|
_model = new Model.SignalType(rhs);
|
this.NameTextEdit.EditValue = _model.Name;
|
this.IdentifierTextEdit.EditValue = _model.Identifier;
|
this.UnitTypeImageComboBoxEdit.EditValue = _model.UnitType;
|
this.DecimalPlacesTextEdit.EditValue = _model.DecimalPlaces;
|
this.TagNameTextEdit.EditValue = _model.TagName;
|
this.DescriptionMemoEdit.EditValue = _model.Description;
|
}
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData(long GroupID, int SortCode)
|
{
|
this.Text = "添加数值信号类型";
|
_model = new Model.SignalType();
|
_model.GroupID = GroupID;
|
_model.ValueType = Model.Monitor.eValueType.Numeric;
|
_model.SortCode = SortCode;
|
}
|
|
//初始化单位类型
|
private void InitialUI_UnitType()
|
{
|
this.UnitTypeImageComboBoxEdit.Properties.BeginUpdate();
|
this.UnitTypeImageComboBoxEdit.Properties.Items.Clear();
|
this.UnitTypeImageComboBoxEdit.Properties.Items.AddEnum(typeof(Unit.eUnitType), false);
|
this.UnitTypeImageComboBoxEdit.Properties.EndUpdate();
|
}
|
|
//验证
|
private bool Valid()
|
{
|
this.dxErrorProvider1.ClearErrors();
|
if (string.IsNullOrEmpty(this.NameTextEdit.Text.Trim()))
|
{
|
this.dxErrorProvider1.SetError(this.NameTextEdit, "必填项");
|
return false;
|
}
|
var identifier = this.IdentifierTextEdit.Text.Trim();
|
if (string.IsNullOrEmpty(identifier))
|
{
|
this.dxErrorProvider1.SetError(this.IdentifierTextEdit, "必填项");
|
return false;
|
}
|
if (this.ValidIdentifierUniqueEvent != null)
|
{
|
|
if (!this.ValidIdentifierUniqueEvent(_model.Id, identifier))
|
{
|
this.dxErrorProvider1.SetError(this.IdentifierTextEdit, "标识重复");
|
return false;
|
}
|
}
|
if (string.IsNullOrEmpty(this.UnitTypeImageComboBoxEdit.Text.Trim()))
|
{
|
this.dxErrorProvider1.SetError(this.UnitTypeImageComboBoxEdit, "必选项");
|
return false;
|
}
|
if (this.UnitValueComboBoxEdit.Properties.Items.Count > 0)
|
{
|
if (this.UnitValueComboBoxEdit.EditValue == null)
|
{
|
this.dxErrorProvider1.SetError(this.UnitValueComboBoxEdit, "必选项");
|
return false;
|
}
|
}
|
return true;
|
}
|
|
//确定
|
private void btnOk_Click(object sender, EventArgs e)
|
{
|
if (!Valid())
|
return;
|
_model.Name = this.NameTextEdit.Text.Trim();
|
_model.Identifier = this.IdentifierTextEdit.Text.Trim();
|
_model.UnitType = (eUnitType)this.UnitTypeImageComboBoxEdit.EditValue;
|
if (this.UnitValueComboBoxEdit.EditValue is Model.IntAndString)
|
{
|
_model.UnitValue = (this.UnitValueComboBoxEdit.EditValue as Model.IntAndString).IntValue.ToString();
|
}
|
else
|
{
|
_model.UnitValue = this.UnitValueComboBoxEdit.Text.Trim();
|
}
|
if (string.IsNullOrEmpty(this.DecimalPlacesTextEdit.Text.Trim()))
|
_model.DecimalPlaces = null;
|
else
|
_model.DecimalPlaces = int.Parse(this.DecimalPlacesTextEdit.Text);
|
_model.TagName = this.TagNameTextEdit.Text.Trim();
|
_model.Description = this.DescriptionMemoEdit.Text.Trim();
|
|
|
var bll = new BLL.Scatl.SignalType();
|
if (!bll.Update(_model))
|
{
|
XtraMessageBox.Show("更新失败!");
|
return;
|
}
|
if (this.ReloadDataEvent != null)
|
{
|
var model = bll.GetById(_model.Id);
|
this.ReloadDataEvent.Invoke(model);
|
}
|
|
this.DialogResult = DialogResult.OK;
|
this.Close();
|
}
|
|
//单位类型改变
|
private void imgCmbUnitType_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
if (this.UnitTypeImageComboBoxEdit.EditValue == null)
|
return;
|
this.UnitValueComboBoxEdit.Properties.BeginUpdate();
|
this.UnitValueComboBoxEdit.Properties.Items.Clear();
|
this.UnitValueComboBoxEdit.EditValue = null;
|
var unit_type = (Unit.eUnitType)this.UnitTypeImageComboBoxEdit.EditValue;
|
var dict = UnitHelper.GetEnUnitDict(unit_type);
|
if (dict == null || dict.Count < 1)
|
{
|
this.UnitValueComboBoxEdit.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
|
if (unit_type == _model.UnitType)
|
{
|
this.UnitValueComboBoxEdit.EditValue = _model.UnitValue;
|
}
|
}
|
else
|
{
|
this.UnitValueComboBoxEdit.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
|
var unit_value_list = dict.Select(x => new Model.IntAndString(x.Key, x.Value)).ToList();
|
unit_value_list.ForEach(x => this.UnitValueComboBoxEdit.Properties.Items.Add(x));
|
if (unit_type == _model.UnitType)
|
{
|
if (int.TryParse(_model.UnitValue, out int unitValue))
|
{
|
var item = unit_value_list.Find(x => x.IntValue == unitValue);
|
if (item != null)
|
this.UnitValueComboBoxEdit.EditValue = item;
|
}
|
}
|
}
|
this.UnitValueComboBoxEdit.Properties.EndUpdate();
|
}
|
}
|
}
|