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 AddNumericListSignalTypeDlg : DevExpress.XtraEditors.XtraForm { public AddNumericListSignalTypeDlg() { 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(long GroupID, int SortCode) { this.Text = "添加集合信号类型"; _model = new Model.SignalType(); _model.GroupID = GroupID; _model.ValueType = Model.Monitor.eValueType.Array; _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(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(); var id = bll.Insert(_model); if (id < 1) { XtraMessageBox.Show("添加失败!"); return; } if (this.ReloadDataEvent != null) { var model = bll.GetById(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; } 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)); } this.UnitValueComboBoxEdit.Properties.EndUpdate(); } } }