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();
}
///
/// 验证标识的唯一性事件
///
public event Func ValidIdentifierUniqueEvent;
///
/// 返回数据事件
///
public event Action ReloadDataEvent;
private Model.SignalType _model = null;//当前操作对象
///
/// 绑定数据
///
///
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;
}
///
/// 绑定数据
///
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();
}
}
}