/// <summary> /// 剂量控件数据修改前判断数据合法性 /// 验证剂量控件输入或复制到控件的数据是否合法,如果不合法不改变剂量值 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void ctrl_ValueTextChanging(object sender, ChangingEventArgs e) { XComboBoxUnit comboBoxUnit = sender as XComboBoxUnit; if (comboBoxUnit == null) { return; } // 验证剂量只能是数字,保留4为小数 string regextext = @"^(\d+)(\.)?(\d{1,4})?$"; Regex regex = new Regex(regextext, RegexOptions.None); if (e.NewValue == null || string.IsNullOrEmpty(e.NewValue.ToString())) { return; } bool isMatch = regex.IsMatch(e.NewValue.ToString()); if (!isMatch) { e.Cancel = true; } }
protected override void editorWillAppear(object rowDataSource, XBaseUserRender ctrl) { EmsOrDrug drug = rowDataSource as EmsOrDrug; if (null != drug) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; string sd_mmbind_op = drug.Sd_mmbind_op; //开立绑定可以编辑 xComboBoxUnit.UnitIsEnable = (!string.IsNullOrEmpty(sd_mmbind_op) && sd_mmbind_op.Equals("0")) ? true : false; //if (xComboBoxUnit.ValueUnit.Length > 0) //{ Dictionary <object, string> items = new Dictionary <object, string>(); items.Add(drug.Id_unit_med + "," + "1", drug.Name_unit_med); if (drug.Id_unit_base != null && !drug.Id_unit_base.Equals(drug.Id_unit_med)) { items.Add(drug.Id_unit_base + "," + drug.Factor_mb, drug.Name_unit_base); } xComboBoxUnit.DataSource = items; //} xComboBoxUnit.ValueText = (drug.Quan_medu_virtual == null ? null : drug.Quan_medu_virtual.ToString()); xComboBoxUnit.ValueUnit = (drug.Name_unit_medu_virtual == null ? "" : drug.Name_unit_medu_virtual); // 自定义控件需要传递编辑完成后该列的错误信息 setColumnForeColor(drug, ctrl); } }
/// <summary> /// 剂量单位和数值发生变化时重新设置quan_medu的值 /// </summary> /// <param name="xComboBoxUnit"></param> /// <param name="drug"></param> protected void setQuanMedu(XComboBoxUnit xComboBoxUnit, EmsOrDrug drug) { int selectIndex = xComboBoxUnit.SelectIndex; /* if (selectIndex==0)//*/ //控件的 xComboBoxUnit.SelectIndex的值有问题 改为xComboBoxUnit.ValueUnit来判断 if (xComboBoxUnit.ValueUnit == drug.Name_unit_med) { if (drug.Quan_medu_virtual != null) { drug.Quan_med = drug.Quan_medu_virtual; } else { drug.Quan_med = null; } } else /* if (selectIndex == 1)//*/ //if (xComboBoxUnit.ValueUnit == drug.Name_unit_med) { if (drug.Quan_medu_virtual != null && drug.Factor_mb != null) { drug.Quan_med = drug.Quan_medu_virtual * drug.Factor_mb; } else { drug.Quan_med = null; } } }
protected override void initCellControlFormat(XBaseUserRender ctrl) { base.initCellControlFormat(ctrl); XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; xComboBoxUnit.MaxInputNumber = 99999999.9999; // 最大长度8位整型 }
protected override void initCellControlFormat(XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; xComboBoxUnit.ComboboxWidthPercent = 0.38; xComboBoxUnit.TextAlignment = System.Windows.Forms.HorizontalAlignment.Right; xComboBoxUnit.UnitIsEnable = false; // 禁用单位编辑 }
protected override void editorWillDisappear(object rowDataSource, XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; CiordubDTO btitemdo = rowDataSource as CiordubDTO; if (null != btitemdo) { btitemdo.Quan_medu = ((xComboBoxUnit.ValueText == null || xComboBoxUnit.ValueText.Length == 0) ? 0 : Double.Parse(xComboBoxUnit.ValueText)); btitemdo.Name_unit = xComboBoxUnit.ValueUnit; } }
protected override void editorWillAppear(object rowDataSource, XBaseUserRender ctrl) { CiordubDTO btitemdo = rowDataSource as CiordubDTO; if (null != btitemdo) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; xComboBoxUnit.ValueText = btitemdo.Quan_medu == null ? "" : btitemdo.Quan_medu.ToString(); xComboBoxUnit.ValueUnit = btitemdo.Name_unit; } }
protected override void editorWillDisappear(object rowDataSource, XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; CiOrdFeeSrvDTO drug = rowDataSource as CiOrdFeeSrvDTO; if (null != drug) { double quan_med = ((xComboBoxUnit.ValueText == null || xComboBoxUnit.ValueText.Length == 0) ? 0 : Double.Parse(xComboBoxUnit.ValueText)); drug.Quan_med = quan_med == 0 ? 0.001 : quan_med; drug.Name_unit_med = xComboBoxUnit.ValueUnit; } }
protected override void editorWillDisappear(object rowDataSource, XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; CiOrdFeeSrvDTO drug = rowDataSource as CiOrdFeeSrvDTO; if (null != drug) { drug.Quan_total_medu = ((xComboBoxUnit.ValueText == null || xComboBoxUnit.ValueText.Length == 0) ? 0 : Double.Parse(xComboBoxUnit.ValueText)); drug.Name_unit_sale = xComboBoxUnit.ValueUnit; drug.Id_unit_sale = xComboBoxUnit.SelectKey.ToString(); } }
protected override void initCellControlFormat(XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; //xComboBoxUnit.ComboboxWidthPercent = 0.38; xComboBoxUnit.TextAlignment = System.Windows.Forms.HorizontalAlignment.Right; //xComboBoxUnit.MinInputNumber = 0.001; xComboBoxUnit.MaxInputNumber = 99999999.9999; xComboBoxUnit.NullFlag = false; xComboBoxUnit.HasError = false; }
/// <summary> /// 总量单位 /// </summary> /// <param name="rowDataSource"></param> /// <param name="ctrl"></param> protected override void editorWillAppear(Object rowDataSource, XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; EmsOrDrug drug = rowDataSource as EmsOrDrug; if (null != drug) { //if (xComboBoxUnit.ValueUnit.Length > 0) //{ Dictionary <object, string> items = new Dictionary <object, string>(); //items.Add(drug.Id_unit_sale, drug.Name_unit_sale); FMap fmap = drug.Relativefieldmap; if (fmap == null) { if (drug.Id_unit_sale != null) { items.Add(drug.Id_unit_sale, drug.Name_unit_sale); } else { items.Add("", drug.Name_unit_sale); } } else { string idstr = (string)fmap[CiDictCodeConst.EMSORDRUG_RELATIVE_FIELD_ID_MEASDOC]; string namestr = (string)fmap[CiDictCodeConst.EMSORDRUG_RELATIVE_FIELD_MEASDOC_NAME]; string factorstr = (string)fmap["factor"]; if (!string.IsNullOrEmpty(idstr) && !string.IsNullOrEmpty(namestr) && !string.IsNullOrEmpty(factorstr)) { string[] ids = idstr.Split(new char[] { ',' }); string[] names = namestr.Split(new char[] { ',' }); string[] factors = factorstr.Split(','); for (int i = 0; i < ids.Length; i++) { if (!items.ContainsKey(ids[i] + "," + factors[i])) { items.Add(ids[i] + "," + factors[i], names[i]); } } } } xComboBoxUnit.DataSource = items; //} xComboBoxUnit.ValueText = (drug.Quan_cur == null ? "0" : drug.Quan_cur.ToString()); xComboBoxUnit.ValueUnit = (drug.Name_unit_sale == null ? "" : drug.Name_unit_sale); } }
protected override void onTextValueChanged(object sender, object ds) { if (null != ds) { EmsOrDrug drug = ds as EmsOrDrug; if (this.emsView is EmsDrugSrvGridView) { XComboBoxUnit ctrl = sender as XComboBoxUnit; //Debug.WriteLine(DateTime.Now + " ValueText:" + ctrl.ValueText); drug.Quan_cur = double.Parse(ctrl.ValueText); this.emsView.GetViewModel().OnDataChanged(drug, "customercolumn_sale_unit_Quan_cur", drug.Quan_cur.ToString()); } } }
protected override void editorWillAppear(object rowDataSource, XBaseUserRender ctrl) { EmsOrDrug drug = rowDataSource as EmsOrDrug; if (null != drug) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; xComboBoxUnit.ValueText = (drug.Quan_med == null ? "0" : drug.Quan_med.ToString()); xComboBoxUnit.ValueUnit = (drug.Name_unit_med == null ? "" : drug.Name_unit_med); if (xComboBoxUnit.ValueUnit.Length > 0) { Dictionary <object, string> items = new Dictionary <object, string>(); items.Add(drug.Id_unit_med, drug.Name_unit_med); xComboBoxUnit.DataSource = items; } } }
protected override void onUnitSelectChanged(object sender, object ds) { XComboBoxUnit xComboBoxUnit = sender as XComboBoxUnit; EmsOrDrug drug = ds as EmsOrDrug; int selectIndex = xComboBoxUnit.SelectIndex; // 选择没有变化 if (String.IsNullOrEmpty(drug.Name_unit_medu_virtual) == String.IsNullOrEmpty(xComboBoxUnit.ValueUnit) || xComboBoxUnit.ValueUnit.Equals(drug.Name_unit_medu_virtual)) { return; } if (selectIndex == 0) { if (drug.Quan_medu_virtual != null) { drug.Quan_medu_virtual = drug.Quan_medu_virtual.DoubleValue() * drug.Factor_mb.DoubleValue(); drug.Name_unit_medu_virtual = xComboBoxUnit.ValueUnit; } else { drug.Quan_medu_virtual = null; drug.Quan_med = null; } } else if (selectIndex == 1) { if (drug.Quan_medu_virtual != null) { //判断能否整除,如果能整除直接取整除的值,不能整除设置为空,让医生重新录入 if (LogicEx.GetInstance().divided(drug.Quan_medu_virtual, drug.Factor_mb)) { drug.Quan_medu_virtual = drug.Quan_medu_virtual.DoubleValue() / drug.Factor_mb.DoubleValue(); drug.Name_unit_medu_virtual = xComboBoxUnit.ValueUnit; } else { drug.Quan_medu_virtual = null; drug.Quan_med = null; } } } xComboBoxUnit.ValueText = drug.Quan_medu_virtual == null ? "" : drug.Quan_medu_virtual + ""; }
protected override void onUnitSelectChanged(object sender, object ds) { if (null != ds) { EmsOrDrug drug = ds as EmsOrDrug; if (this.emsView is EmsDrugSrvGridView) { XComboBoxUnit ctrl = sender as XComboBoxUnit; drug.Name_unit_sale = ctrl.ValueUnit; string selectKey = ctrl.SelectKey.ToString(); string id_unit_sale = selectKey.Split(',')[0]; string factor = selectKey.Split(',')[1]; drug.Id_unit_sale = id_unit_sale; drug.Factor_cb = string.IsNullOrEmpty(factor) ? 0 : Convert.ToDouble(factor); this.emsView.GetViewModel().OnDataChanged(drug, "customercolumn_sale_unit_Name_unit_sale", drug.Name_unit_sale); ctrl.ValueText = drug.Quan_cur.ToString(); } } }
/// <summary> /// 频次单位双下拉框控件(频次下拉单位文本框组合控件) /// </summary> /// <param name="parent"></param> /// <param name="isDoubleDrop">是否是双下拉形式</param> public XOrderUnitFreqGroup(Control parent, bool isDoubleDrop) { this.Size = new System.Drawing.Size(205, 24); this.isDoubleDrop = isDoubleDrop; if (isDoubleDrop) { unitReUnder = new XComboBoxUnit(parent); unitReUnder.Size = new System.Drawing.Size(102, 24); unitReUnder.Location = new Point(this.Bound.X, this.Bound.Y); unitReUnder.RightTophorn = false; unitReUnder.RightBottmhorn = false; unitReUnder.SelectValueChanged += new EventHandler(UnitReUnder_SelectValueChanged); unitReUnder.ValueTextChanged += new EventHandler(UnitReUnder_ValueTextChanged); this.AddRender(unitReUnder); freqncRender = new XComboBox(parent); freqncRender.Size = new Size(102, 24); freqncRender.Location = new Point(unitReUnder.Bound.Right - 1, unitReUnder.Bound.Top); freqncRender.ValueTextChanged += new EventHandler(FreqncRender_ValueTextChanged); freqncRender.LeftTophorn = false; freqncRender.LeftBottmhorn = false; this.AddRender(freqncRender); } else { unitTextBox = new XUnitTextBoxMul(); unitTextBox.Size = new System.Drawing.Size(100, 24); unitTextBox.IsNumber = true; unitTextBox.NullFlag = false; unitTextBox.MinValue = 0; unitTextBox.MaxLength = 4; unitTextBox.Location = new Point(this.Bound.X, this.Bound.Y); unitTextBox.ValueTextChanged += new EventHandler(UnitTextBox_ValueTextChanged); this.AddRender(unitTextBox); freqncRender = new XComboBox(parent); freqncRender.Size = new Size(100, 24); freqncRender.ValueTextChanged += new EventHandler(FreqncRender_ValueTextChanged); freqncRender.Location = new Point(unitTextBox.Bound.Right + 4, unitTextBox.Bound.Top); this.AddRender(freqncRender); } }
protected override void onTextValueChanged(object sender, object ds) { XComboBoxUnit xComboBoxUnit = sender as XComboBoxUnit; EmsOrDrug drug = ds as EmsOrDrug; //if (String.IsNullOrEmpty(drug.Quan_medu_virtual==null?"": drug.Quan_medu_virtual.ToString()) == String.IsNullOrEmpty(xComboBoxUnit.ValueText) || xComboBoxUnit.ValueText.Equals(drug.Quan_medu_virtual.ToString())) //{ // return; //} if (drug != null && xComboBoxUnit != null) { double?quan_med = null; if (xComboBoxUnit.ValueText != null && xComboBoxUnit.ValueText != "") { quan_med = Double.Parse(xComboBoxUnit.ValueText); } drug.Quan_medu_virtual = quan_med; setQuanMedu(xComboBoxUnit, drug); } }
protected override XBaseUserRender createCustomCtrl() { // 计量单位控件 XComboBoxUnit ctrl = new XComboBoxUnit(); // 单位下拉事件 ctrl.OnClickedDropDownForm += new EventHandler(OnClickedDropDown); // 单位选择事件 ctrl.SelectValueChanged += new EventHandler(ctrl_SelectValueChanged); // 计量值改变事件 ctrl.ValueTextChanged += new EventHandler(ctrl_ValueTextChanged); ctrl.ValueTextChanging += new ChangingEventHandler(ctrl_ValueTextChanging); // ctrl.MaxInputNumber = 100000000; // ctrl.MaxLength = 4; // 剂量与单位水平位置占比 ctrl.ComboboxWidthPercent = 0.5; // 是否允许单位为空 AllowUnitNull = false; return(ctrl); }
protected override void editorWillDisappear(object rowDataSource, XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; EmsOrDrug drug = rowDataSource as EmsOrDrug; if (null != drug) { drug.Quan_cur = ((xComboBoxUnit.ValueText == null || xComboBoxUnit.ValueText.Length == 0) ? 0 : Double.Parse(xComboBoxUnit.ValueText)); drug.Name_unit_sale = xComboBoxUnit.ValueUnit; string selectKey = xComboBoxUnit.SelectKey.ToString(); string id_unit_sale = selectKey.Split(',')[0]; string factor = ""; if (selectKey.IndexOf(",") != -1) { factor = selectKey.Split(',')[1]; } drug.Id_unit_sale = id_unit_sale; drug.Factor_cb = string.IsNullOrEmpty(factor) ? 0 : Convert.ToDouble(factor); } }
protected override void editorWillDisappear(object rowDataSource, XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; EmsOrDrug drug = rowDataSource as EmsOrDrug; if (null != drug) { double?quan_med = null; if (xComboBoxUnit.ValueText != null && xComboBoxUnit.ValueText != "") { quan_med = Double.Parse(xComboBoxUnit.ValueText); } drug.Quan_medu_virtual = quan_med;//quan_med == null ? 0: drug.Name_unit_medu_virtual = xComboBoxUnit.ValueUnit; if (String.IsNullOrEmpty(xComboBoxUnit.ValueUnit)) { drug.Name_unit_med = xComboBoxUnit.ValueUnit; } setQuanMedu(xComboBoxUnit, drug); } }
protected override void editorWillAppear(object rowDataSource, XBaseUserRender ctrl) { CiOrdFeeSrvDTO drug = rowDataSource as CiOrdFeeSrvDTO; if (null != drug) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; xComboBoxUnit.ValueText = (drug.Quan_med == null ? "0" : drug.Quan_med.ToString()); xComboBoxUnit.ValueUnit = (drug.Name_unit_med == null ? "" : drug.Name_unit_med); if (xComboBoxUnit.ValueUnit.Length > 0) { Dictionary <object, string> items = new Dictionary <object, string>(); items.Add(drug.Id_unit_med, drug.Name_unit_med); if (drug.Id_unit_base != null && !drug.Id_unit_base.Equals(drug.Id_unit_med)) { items.Add(drug.Id_unit_base, drug.Name_unit_base); } xComboBoxUnit.DataSource = items; } } }
/// <summary> /// 总量单位 /// </summary> /// <param name="rowDataSource"></param> /// <param name="ctrl"></param> protected override void editorWillAppear(Object rowDataSource, XBaseUserRender ctrl) { XComboBoxUnit xComboBoxUnit = ctrl as XComboBoxUnit; CiOrdFeeSrvDTO drug = rowDataSource as CiOrdFeeSrvDTO; if (null != drug) { Dictionary <object, string> items = new Dictionary <object, string>(); FMap fmap = null;// drug.Relativefieldmap; if (fmap == null) { if (!string.IsNullOrEmpty(drug.Id_unit_sale)) { items.Add(drug.Id_unit_sale, drug.Name_unit_sale); } } else { string idstr = (string)fmap[CiDictCodeConst.EMSORDRUG_RELATIVE_FIELD_ID_MEASDOC]; string namestr = (string)fmap[CiDictCodeConst.EMSORDRUG_RELATIVE_FIELD_MEASDOC_NAME]; if (!string.IsNullOrEmpty(idstr)) { string[] ids = idstr.Split(new char[] { ',' }); string[] names = namestr.Split(new char[] { ',' }); for (int i = 0; i < ids.Length; i++) { items.Add(ids[i], names[i]); } } } xComboBoxUnit.DataSource = items; xComboBoxUnit.ValueText = (drug.Quan_total_medu == null ? "0" : drug.Quan_total_medu.ToString()); xComboBoxUnit.ValueUnit = (drug.Name_unit_sale == null ? "" : drug.Name_unit_sale); } }