using DevExpress.CodeParser;
|
using DevExpress.XtraEditors;
|
using System;
|
using System.Windows.Forms;
|
|
namespace IStation.WinFrmUI
|
{
|
/// <summary>
|
/// 设置一天小时段
|
/// </summary>
|
public partial class ArrayFormatParasCtrl : UserControl, IFormatParas
|
{
|
public ArrayFormatParasCtrl()
|
{
|
InitializeComponent();
|
}
|
|
private Model.SignalType.ArrayFormatParas _model = null;
|
|
private List<Model.UnitType> _unitTypes = null;
|
private List<Model.UnitValue> _unitValues = null;
|
|
private bool _isNON = false;//0
|
private bool _isCustomer = false;//999
|
|
|
//初始化数据
|
public async void Set(string paras)
|
{
|
_unitTypes = await new BLL.UnitType().GetAll();
|
_unitValues = await new BLL.UnitValue().GetAll();
|
|
|
if (_unitTypes != null && _unitTypes.Count > 0)
|
{
|
foreach (var unitType in _unitTypes)
|
{
|
this.UnitTypeImageComboBoxEdit.Properties.Items.Add(unitType.Name, unitType.Code, -1);
|
}
|
}
|
|
_model = Model.SignalType.ArrayFormatParas.ToModel(paras);
|
if (_model == null)
|
{
|
_model = new Model.SignalType.ArrayFormatParas();
|
this.UnitTypeImageComboBoxEdit.SelectedIndex = 0;
|
}
|
else
|
{
|
|
this.UnitTypeImageComboBoxEdit.EditValue = _model.UnitType;
|
}
|
|
this.DecimalPlacesTextEdit.EditValue = _model.DecimalPlaces;
|
}
|
|
|
//单位类型变换
|
private void UnitTypeImageComboBoxEdit_EditValueChanged(object sender, EventArgs e)
|
{
|
if (_unitTypes == null || _unitTypes.Count < 1)
|
return;
|
var code = (int)this.UnitTypeImageComboBoxEdit.EditValue;
|
SetUnitValueComboBoxEdit(code);
|
}
|
|
private void SetUnitValueComboBoxEdit(int unitTypeCode)
|
{
|
_isNON = false;
|
this.UnitValueComboBoxEdit.Text = string.Empty;
|
this.UnitValueComboBoxEdit.Properties.Items.Clear();
|
this.UnitValueComboBoxEdit.Enabled = true;
|
this.UnitValueComboBoxEdit.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
|
if (unitTypeCode == 0)
|
{
|
_isNON = true;
|
this.UnitValueComboBoxEdit.Enabled = false;
|
}
|
else if (unitTypeCode == 999)
|
{
|
_isCustomer = true;
|
this.UnitValueComboBoxEdit.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
|
if (unitTypeCode == _model.UnitType)
|
{
|
this.UnitValueComboBoxEdit.Text = _model.UnitValue;
|
}
|
}
|
else
|
{
|
var unitType = _unitTypes.Find(x => x.Code == unitTypeCode);
|
if (unitType == null)
|
return;
|
var unitValues = _unitValues.FindAll(x => x.TypeID == unitType.ID);
|
if (unitValues == null || unitValues.Count < 1)
|
return;
|
foreach (var item in unitValues)
|
{
|
var keyIntValue = new KeyIntValue(item.Name, item.Code);
|
this.UnitValueComboBoxEdit.Properties.Items.Add(keyIntValue);
|
}
|
|
this.UnitValueComboBoxEdit.SelectedIndex = 0;
|
if (unitTypeCode == _model.UnitType)
|
{
|
if (int.TryParse(_model.UnitValue, out int value))
|
{
|
var index = unitValues.FindIndex(x => x.Code == value);
|
this.UnitValueComboBoxEdit.SelectedIndex = index;
|
}
|
}
|
}
|
}
|
|
|
//验证
|
public bool Valid()
|
{
|
if (this.UnitTypeImageComboBoxEdit.EditValue == null)
|
{
|
XtraMessageBox.Show("请选择单位类型!");
|
return false;
|
}
|
if (!_isNON)
|
{
|
if (string.IsNullOrEmpty(this.UnitValueComboBoxEdit.Text))
|
{
|
XtraMessageBox.Show("请选择/录入单位值!");
|
return false;
|
}
|
}
|
|
return true;
|
}
|
|
|
//获取时间
|
public string Get()
|
{
|
if (!Valid())
|
return default;
|
_model.UnitType = (int)this.UnitTypeImageComboBoxEdit.EditValue;
|
if (_isNON)
|
{
|
_model.UnitValue = string.Empty;
|
}
|
else if (_isCustomer)
|
{
|
_model.UnitValue = this.UnitValueComboBoxEdit.Text.TrimEnd();
|
}
|
else
|
{
|
var keyIntValue = (this.UnitValueComboBoxEdit.SelectedItem as KeyIntValue);
|
_model.UnitValue = keyIntValue?.Value.ToString() ?? string.Empty;
|
}
|
|
var decimalPlaces = this.DecimalPlacesTextEdit.Text.Trim();
|
if (!string.IsNullOrEmpty(decimalPlaces))
|
_model.DecimalPlaces = int.Parse(decimalPlaces);
|
else
|
_model.DecimalPlaces = null;
|
|
return _model.ToJson();
|
}
|
|
|
}
|
}
|