using DevExpress.XtraBars.ToolbarForm; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DevExpress.XtraEditors.DXErrorProvider; using DeviceRepair.Models; using System; using System.Collections.Generic; using TsSFCDevice.Client.Biz.Impl; namespace TsSFCDevice.Client.Launch.CustomField { public partial class pageFieldEdit : ToolbarForm { /// /// 窗体标题 /// private string _Caption = ""; public string Caption { get { return _Caption; } set { _Caption = value; Text = value; } } /// /// 编码 /// public string FieldCode = string.Empty; /// /// 当前字段对象 /// private FieldsInfo CurrentEntity = null; /// /// 字段显示值 /// private string FieldText { get { return txt_FieldText.Text.Trim(); } set { txt_FieldText.Text = value; } } /// /// 字段值 /// private string FieldValue { get { return txt_FieldValue.Text.Trim(); } set { txt_FieldValue.Text = value; } } /// /// 字段值类型 /// private string FieldType { get { return lup_FieldType.EditValue + ""; } set { lup_FieldType.EditValue = value; } } public string ErrorMsg = "操作失败!"; public pageFieldEdit(string Code, FieldsInfo entity = null) { InitializeComponent(); lup_FieldType.Properties.Columns.Clear(); lup_FieldType.Properties.DataSource = FieldsTypeCollect;//绑定数据源 lup_FieldType.Properties.DisplayMember = "Name"; //=>要显示的字段名 lup_FieldType.Properties.ValueMember = "TypeValue";//=>获取或设置值的字段名 lup_FieldType.Properties.Columns.AddRange(new LookUpColumnInfo[] { new LookUpColumnInfo { Caption = "字段值类型", FieldName = "Name" } });//增加列 lup_FieldType.Properties.BestFitMode = BestFitMode.BestFit;//列宽自适应 lup_FieldType.Properties.NullText = "请选择"; //value为null是显示"请选择" lup_FieldType.EditValue = "NVarChar"; // 验证控件初始化 InitializeValidationProvider(); FieldCode = Code; if (entity != null) { CurrentEntity = entity; Caption = "编辑"; FieldText = entity.FieldText; FieldType = entity.FieldType; FieldValue = entity.FieldValue; btn_Save.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; btn_SaveAndClose.Caption = "保存"; } else { Caption = "新增"; } this.Load += PageFieldEdit_Load; } /// /// 窗体加载 /// /// /// private void PageFieldEdit_Load(object sender, System.EventArgs e) { layoutControl1.AllowCustomization = false; } List _FieldsTypeCollect; public List FieldsTypeCollect { get { if (_FieldsTypeCollect == null) _FieldsTypeCollect = new List() { new { TypeValue = "NVarChar", Name = "文本值" }, new { TypeValue = "double", Name = "数值" }, new { TypeValue = "decimal", Name = "货币" } }; return _FieldsTypeCollect; } } /// /// 初始化验证控件 /// private void InitializeValidationProvider() { try { //实例化一个必填规则,错误提示为:该字段不能为空 ConditionValidationRule required = new ConditionValidationRule("RequiredRule", ConditionOperator.IsNotBlank) { ErrorText = $"字段不能为空!" }; BaseEdit[] param = new BaseEdit[] { txt_FieldText, txt_FieldValue }; for (int i = 0; i < param.Length; i++) { dxValidationProvider1.SetValidationRule(param[i], required); dxValidationProvider1.SetIconAlignment(param[i], System.Windows.Forms.ErrorIconAlignment.MiddleRight); } } catch (Exception ex) { ErrorMsg = ex.Message; XtraMessageBoxHelper.Error(ex.Message); } } /// /// 保存 /// /// /// private void btn_Save_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { if (dxValidationProvider1.Validate()) { splashScreenManager1.ShowWaitForm(); APIResponseData apiResponseData = null; bool hasWhiteSpace = false; if (string.IsNullOrWhiteSpace(FieldText)) { dxErrorProvider1.SetIconAlignment(txt_FieldText, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldText, "字段不能为空!", ErrorType.Critical); hasWhiteSpace = true; } if (string.IsNullOrWhiteSpace(FieldValue)) { dxErrorProvider1.SetIconAlignment(txt_FieldValue, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldValue, "字段不能为空!", ErrorType.Critical); hasWhiteSpace = true; } if (FieldType == "double") { double val = 0; if (!double.TryParse(FieldValue, out val)) { dxErrorProvider1.SetIconAlignment(txt_FieldValue, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldValue, "输入的值不正确!", ErrorType.Critical); hasWhiteSpace = true; } } else if (FieldType == "decimal") { decimal val = 0; if (!decimal.TryParse(FieldValue, out val)) { dxErrorProvider1.SetIconAlignment(txt_FieldValue, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldValue, "输入的值不正确!", ErrorType.Critical); hasWhiteSpace = true; } } if (hasWhiteSpace) { splashScreenManager1.TryCloseWait(); return; } // 校验Text是否存在 if (CustomFieldRepository.Instance.Get_Field_Exists(FieldCode, FieldText)) { dxErrorProvider1.SetIconAlignment(txt_FieldText, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldText, "字段名称重复!", ErrorType.Warning); splashScreenManager1.TryCloseWait(); return; } FieldsInfo f = new FieldsInfo { FieldCode = FieldCode, FieldText = FieldText, FieldValue = FieldValue, FieldType = FieldType, }; apiResponseData = CustomFieldRepository.Instance.InsertOrEdit_Field_Data(f); if (!apiResponseData.IsSuccess) throw new Exception(apiResponseData.Message); splashScreenManager1.TryCloseWait(); txt_FieldText.EditValue = ""; lup_FieldType.EditValue = ""; txt_FieldValue.EditValue = ""; XtraMessageBoxHelper.Info("操作成功!"); } else { XtraMessageBoxHelper.Info("校验失败!"); } splashScreenManager1.TryCloseWait(); } catch (Exception ex) { ErrorMsg = ex.Message; splashScreenManager1.TryCloseWait(); XtraMessageBoxHelper.Error(ex.Message); } } /// /// 保存并且关闭 /// /// /// private void btn_SaveAndClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { if (dxValidationProvider1.Validate()) { splashScreenManager1.ShowWaitForm(); APIResponseData apiResponseData = null; bool hasWhiteSpace = false; if (string.IsNullOrWhiteSpace(FieldText)) { dxErrorProvider1.SetIconAlignment(txt_FieldText, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldText, "字段不能为空!", ErrorType.Critical); hasWhiteSpace = true; } if (string.IsNullOrWhiteSpace(FieldValue)) { dxErrorProvider1.SetIconAlignment(txt_FieldValue, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldValue, "字段不能为空!", ErrorType.Critical); hasWhiteSpace = true; } if (FieldType == "double") { double val = 0; if (!double.TryParse(FieldValue, out val)) { dxErrorProvider1.SetIconAlignment(txt_FieldValue, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldValue, "输入的值不正确!", ErrorType.Critical); hasWhiteSpace = true; } } else if (FieldType == "decimal") { decimal val = 0; if (!decimal.TryParse(FieldValue, out val)) { dxErrorProvider1.SetIconAlignment(txt_FieldValue, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldValue, "输入的值不正确!", ErrorType.Critical); hasWhiteSpace = true; } } if (hasWhiteSpace) { splashScreenManager1.TryCloseWait(); return; } if (CurrentEntity == null || (CurrentEntity != null && !CurrentEntity.FieldText.Equals(FieldText, StringComparison.CurrentCultureIgnoreCase))) { // 校验Text是否存在 if (CustomFieldRepository.Instance.Get_Field_Exists(FieldCode, FieldText)) { dxErrorProvider1.SetIconAlignment(txt_FieldText, System.Windows.Forms.ErrorIconAlignment.MiddleRight); dxErrorProvider1.SetError(txt_FieldText, "字段名称重复!", ErrorType.Warning); splashScreenManager1.TryCloseWait(); return; } } FieldsInfo f = CurrentEntity ?? new FieldsInfo(); f.FieldCode = FieldCode; f.FieldText = FieldText; f.FieldValue = FieldValue; f.FieldType = FieldType; apiResponseData = CustomFieldRepository.Instance.InsertOrEdit_Field_Data(f); if (!apiResponseData.IsSuccess) throw new Exception(apiResponseData.Message); splashScreenManager1.TryCloseWait(); XtraMessageBoxHelper.Info("操作成功!"); DialogResult = System.Windows.Forms.DialogResult.OK; } else { XtraMessageBoxHelper.Info("校验失败!"); } splashScreenManager1.TryCloseWait(); } catch (Exception ex) { ErrorMsg = ex.Message; splashScreenManager1.TryCloseWait(); XtraMessageBoxHelper.Error(ex.Message); } } private void lup_FieldType_Properties_EditValueChanged(object sender, EventArgs e) { try { string FieldType = ((ChangingEventArgs)e).NewValue + ""; switch (FieldType) { case "NVarChar": txt_FieldValue.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.None; txt_FieldValue.Properties.ResetMaskSettings(); txt_FieldValue.Properties.NullValuePromptShowForEmptyValue = true; txt_FieldValue.Properties.NullValuePrompt = "请输入文本值"; txt_FieldValue.ToolTip = "请输入文本值"; break; case "double": txt_FieldValue.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx; txt_FieldValue.Properties.Mask.IgnoreMaskBlank = true; txt_FieldValue.Properties.Mask.AutoComplete = DevExpress.XtraEditors.Mask.AutoCompleteType.None; txt_FieldValue.Properties.Mask.EditMask = @"-?(\d|[1-9]\d*)(\.\d+)?"; txt_FieldValue.Properties.NullValuePromptShowForEmptyValue = true; txt_FieldValue.Properties.NullValuePrompt = "请输入数字"; txt_FieldValue.ToolTip = "请输入数字"; break; case "decimal": txt_FieldValue.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx; txt_FieldValue.Properties.Mask.IgnoreMaskBlank = true; txt_FieldValue.Properties.Mask.AutoComplete = DevExpress.XtraEditors.Mask.AutoCompleteType.None; txt_FieldValue.Properties.Mask.EditMask = @"-?(\d|[1-9]\d*)(\.\d+)?"; txt_FieldValue.Properties.NullValuePromptShowForEmptyValue = true; txt_FieldValue.Properties.NullValuePrompt = "请输入货币数值"; txt_FieldValue.ToolTip = "请输入货币数值"; break; default: break; } txt_FieldValue.EditValue = ""; txt_FieldValue.Text = ""; } catch (Exception ex) { ErrorMsg = ex.Message; XtraMessageBoxHelper.Error(ex.Message); } } } }