//验证字符窜处理相关... private bool validatedString(MB.WinBase.Common.ColumnPropertyInfo colPropertyInfo, object inputValue, ref string errMsg) { bool b = true; if (colPropertyInfo.MaxLength > 0) { b = MB.Util.DataValidated.Instance.ValidatedLength(colPropertyInfo.MaxLength, inputValue.ToString()); if (b == false) { //如果检验不通过输出错误的信息 int leng = colPropertyInfo.MaxLength / 2; errMsg = CLL.Message(MSG_CHECKED_LENGTH, new string[] { colPropertyInfo.Description, colPropertyInfo.MaxLength.ToString(), leng.ToString() }); return(false); } } if (colPropertyInfo.FitLength > 0) { b = MB.Util.DataValidated.Instance.ValidatedFitLength(colPropertyInfo.FitLength, inputValue.ToString()); if (!b) { errMsg = CLL.Message(MSG_CHECKED_FIT, new string[] { colPropertyInfo.Description, colPropertyInfo.FitLength.ToString() }); } } return(b); }
//验证数字 private bool validatedNumber(MB.WinBase.Common.ColumnPropertyInfo colPropertyInfo, object inputValue, ref string errMsg) { double val = MB.Util.MyConvert.Instance.ToDouble(inputValue); //判断最大最小值 if (val < colPropertyInfo.MinValue || val > colPropertyInfo.MaxValue) { errMsg = CLL.Message(MSG_MIN_MAX_VALUE, colPropertyInfo.Description, colPropertyInfo.MinValue.ToString(), colPropertyInfo.MaxValue.ToString()); return(false); } //判断小数点位数 if (colPropertyInfo.MaxDecimalPlaces >= 0) { string sv = val.ToString(); if (sv.IndexOf('.') >= 0) { int position = sv.Length - sv.LastIndexOf('.') - 1; if (position > colPropertyInfo.MaxDecimalPlaces) { errMsg = CLL.Message(MSG_MAX_PLACES, colPropertyInfo.Description, colPropertyInfo.MaxDecimalPlaces.ToString()); return(false); } } } return(true); }
//创建BandColumn private void createBandColumn(DevExpress.XtraGrid.Views.BandedGrid.BandedGridView bandGridView, DevExpress.XtraGrid.Views.BandedGrid.GridBand gridBand, Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols, MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo, MB.WinBase.Common.GridColumnLayoutInfo columnLayoutInfo, DevExpress.XtraGrid.Views.BandedGrid.BandedGridColumn bColumn) { MB.WinBase.Common.ColumnPropertyInfo fInfo = colPropertys[columnLayoutInfo.ColumnXmlCfgName]; //判断该列是否可以进行编辑 DevExpress.XtraEditors.Repository.RepositoryItem rEdit = null; if (editCols != null && editCols.ContainsKey(columnLayoutInfo.ColumnXmlCfgName)) { rEdit = CreateEditItemByEditInfo(editCols[columnLayoutInfo.ColumnXmlCfgName], fInfo.CanEdit, fInfo.DataType);//根据用户XML配置的信息获取一个编辑的列。 } else { rEdit = CreateEditItemByCol(fInfo, false); } rEdit.Name = fInfo.Name; bColumn.ColumnEdit = rEdit; bColumn.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; // bColumn.DisplayFormat = new DevExpress.Utils.FormatInfo bandGridView.GridControl.RepositoryItems.Add(rEdit); //这句代码必须添加上,否则顺序的调整将会出现问题。 bandGridView.Columns.Add(bColumn); if (gridBand != null) { gridBand.Columns.Add(bColumn); } SetEditColumn(bColumn, fInfo, columnLayoutInfo, gridViewLayoutInfo); }
/// <summary> /// 验证日期格式的字段 /// </summary> /// <param name="colPropertyInfo">对该字段列的客户端配置属性</param> /// <param name="inputValue">该列的值</param> /// <param name="errMsg">错误信息,ref参数,在方法中定义错误信息并传出</param> /// <returns>验证字段值是否正确,true表示验证正确,false表示验证错误</returns> private bool validatedDateTime(MB.WinBase.Common.ColumnPropertyInfo colPropertyInfo, object inputValue, ref string errMsg) { DateTime val = Convert.ToDateTime(inputValue); //判断是不是DateTime初始值,如果是初始值,则认为是空 if (!colPropertyInfo.IsNull && val == DateTime.MinValue) { string nameDesc = (colPropertyInfo.Description != null && colPropertyInfo.Description.Length > 0) ? colPropertyInfo.Description : colPropertyInfo.Name; errMsg = CLL.Message(MSG_NOTNULL, nameDesc); return(false); } return(true); }
/// <summary> /// 创建Int32的编辑项 /// </summary> /// <returns></returns> public DevExpress.XtraEditors.Repository.RepositoryItem CreateEditItemInt32(MB.WinBase.Common.ColumnPropertyInfo propertyInfo) { DevExpress.XtraEditors.Repository.RepositoryItemSpinEdit int32Item = new MB.XWinLib.XtraGrid.XtraRepositoryItemNumberEdit(); int32Item.IsFloatValue = false; int32Item.EditMask = "N00"; int32Item.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric; int32Item.ValidateOnEnterKey = true; int32Item.Buttons[0].Visible = false; if (propertyInfo != null) { if (propertyInfo.MinValue > Int32.MinValue) { int32Item.MinValue = System.Convert.ToInt32(propertyInfo.MinValue); } if (propertyInfo.MaxValue < Int32.MaxValue) { int32Item.MaxValue = System.Convert.ToInt32(propertyInfo.MaxValue); } } return(int32Item); }
public ColumnPropertyInfo Clone() { ColumnPropertyInfo info = this.MemberwiseClone() as ColumnPropertyInfo; return(info); }
//根据指定的ColumnPropertyInfo 判断输入的值是否符合要求。 private bool validated(MB.WinBase.Common.ColumnPropertyInfo colPropertyInfo, MB.WinBase.Common.ColumnEditCfgInfo colEditProInfo, object inputValue, ref string errMsg) { bool b; StringBuilder msgStr = new StringBuilder(); //得到要检验的这个列 //如果是字符窜类型需要检验长度 //如果值为空不需要检验数据类型 if (colPropertyInfo.IsNull == true && (inputValue == null || inputValue.ToString().Length == 0)) { return(true); } if (colPropertyInfo.IsNull != true && (inputValue == null || inputValue.ToString().Length == 0)) { string nameDesc = (colPropertyInfo.Description != null && colPropertyInfo.Description.Length > 0) ? colPropertyInfo.Description : colPropertyInfo.Name; msgStr.Append(nameDesc + ":不能为空"); //如果检验不通过输出错误的信息 errMsg = CLL.Message(MSG_NOTNULL, new string[] { nameDesc }); return(false); } Type sType = MB.Util.General.CreateSystemType(colPropertyInfo.DataType, false); if (sType == null) { throw new MB.Util.APPException(string.Format("XML 文件中列{0} 的类型配置信息有误,请检查XML 文件配置", colPropertyInfo.Description)); } b = MB.Util.DataValidated.Instance.ValidatedDataType(sType, inputValue); if (b == true) { if (string.Compare(sType.Name, "String", true) == 0) { b = validatedString(colPropertyInfo, inputValue, ref errMsg); } else if (Array.IndexOf(NUMBER_DATA_TYPE, sType.Name.ToUpper()) >= 0) { b = validatedNumber(colPropertyInfo, inputValue, ref errMsg); } else if (Array.IndexOf(DATETIME_DATA_TYPE, sType.Name.ToUpper()) >= 0) { b = validatedDateTime(colPropertyInfo, inputValue, ref errMsg); } else { //其它类型先不做处理 后期根据实际需要再加上 } } else { errMsg = CLL.Message(MSG_MUST_INPUT, new string[] { colPropertyInfo.Description, MB.Util.DataValidated.Instance.GetTypeValidatedErrMsg(sType) }); return(false); } if (colEditProInfo != null && colEditProInfo.IsValidateInputFromDataSource) { b = validateColValueInLookUpSource(colPropertyInfo, colEditProInfo, inputValue, ref errMsg); } return(b); }
//为了兼容以前的验证规则 private bool validated(MB.WinBase.Common.ColumnPropertyInfo colPropertyInfo, object inputValue, ref string errMsg) { return(validated(colPropertyInfo, null, inputValue, ref errMsg)); }
/// <summary> /// 根据XML 配置的单个列进行验证 /// </summary> /// <param name="colPropertyInfo"></param> /// <param name="inputValue"></param> /// <param name="errMsg"></param> /// <returns></returns> public bool SingleDataValidated(MB.WinBase.Common.ColumnPropertyInfo colPropertyInfo, object inputValue, ref string errMsg) { return(validated(colPropertyInfo, inputValue, ref errMsg)); }
/// <summary> /// 根据字段的类型名称获取一个XtrGrid 的编辑控件。 /// </summary> /// <param name="fullTypeName"></param> /// <param name="isCard"> 如果是卡片编辑的话图片的显示使用PictureEdit的方式。</param> /// <returns></returns> public DevExpress.XtraEditors.Repository.RepositoryItem createEditItemByCol(string fullTypeName, bool isCard, MB.WinBase.Common.ColumnPropertyInfo propertyInfo) { DevExpress.XtraEditors.Repository.RepositoryItem item = null; switch (fullTypeName) { case "System.Int16": DevExpress.XtraEditors.Repository.RepositoryItemSpinEdit int16Item = new DevExpress.XtraEditors.Repository.RepositoryItemSpinEdit(); int16Item.IsFloatValue = false; int16Item.EditMask = "N00"; int16Item.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric; item = int16Item; if (propertyInfo != null) { if (propertyInfo.MinValue > Int32.MinValue) { int16Item.MinValue = System.Convert.ToInt16(propertyInfo.MinValue); } if (propertyInfo.MaxValue < Int32.MaxValue) { int16Item.MaxValue = System.Convert.ToInt16(propertyInfo.MaxValue); } } break; case "System.Int32": item = CreateEditItemInt32(propertyInfo); break; case "System.Decimal": DevExpress.XtraEditors.Repository.RepositoryItemCalcEdit deciItem = new XtraRepositoryItemCalcEditEx(); deciItem.MaxLength = 12; //初不设置的一个数,需要修改; item = deciItem; break; case "System.DateTime": DevExpress.XtraEditors.Repository.RepositoryItemDateEdit dateItem = new DevExpress.XtraEditors.Repository.RepositoryItemDateEdit(); dateItem.NullDate = DateTime.MinValue; dateItem.NullText = string.Empty; dateItem.AutoHeight = false; item = dateItem; break; case "System.Boolean": //目前Boolean 先用CheckedBox 来表达,如果需要再修改为Group Radio DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit boolItem = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit(); item = boolItem; break; case "System.Byte[]": if (!isCard) { DevExpress.XtraEditors.Repository.RepositoryItemImageEdit imageItem = new DevExpress.XtraEditors.Repository.RepositoryItemImageEdit(); //imageItem.NullText = ""; item = imageItem; } else { DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit picItem = new DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit(); item = picItem; } break; default: DevExpress.XtraEditors.Repository.RepositoryItemTextEdit txtItem = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit(); item = txtItem; break; } return(item);//new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit(); }
//创建一个编辑的edit item 列 /// <summary> /// 根据字段的类型名称获取一个XtrGrid 的编辑控件。 /// </summary> /// <param name="dc"></param> /// <param name="isCard">如果是卡片编辑的话图片的显示使用PictureEdit的方式。</param> /// <returns></returns> public DevExpress.XtraEditors.Repository.RepositoryItem CreateEditItemByCol(MB.WinBase.Common.ColumnPropertyInfo colInfo, bool isCard) { return(createEditItemByCol(colInfo.DataType, isCard, colInfo)); }
/// <summary> /// 根据配置的XML文件设置列的信息。 /// </summary> /// <param name="pColumn"></param> /// <param name="pFieldInfo"></param> public void SetEditColumn(DevExpress.XtraGrid.Columns.GridColumn gridColumn, MB.WinBase.Common.ColumnPropertyInfo columnPropertyInfo, MB.WinBase.Common.GridColumnLayoutInfo columnLayoutInfo, MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo) { gridColumn.Caption = columnPropertyInfo.Description; if (columnLayoutInfo != null) { gridColumn.FieldName = columnLayoutInfo.Name; } else { gridColumn.FieldName = columnPropertyInfo.Name; } gridColumn.Name = "XtCol" + columnPropertyInfo.Name; gridColumn.Width = columnPropertyInfo.VisibleWidth; if (columnPropertyInfo.Visibled && columnPropertyInfo.VisibleWidth > 0) { gridColumn.VisibleIndex = columnPropertyInfo.OrderIndex; } else { gridColumn.VisibleIndex = -1; } if (columnPropertyInfo.DataType == "Systen.Byte[]") //目前先假设System.Byte[] 类型都是 System.Image { } else { gridColumn.OptionsColumn.AllowSort = columnPropertyInfo.CanSort ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False; gridColumn.OptionsColumn.AllowGroup = columnPropertyInfo.CanGroup ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False; } if (gridViewLayoutInfo != null && gridViewLayoutInfo.ReadOnly) { XtraGridViewHelper.Instance.SetColumn(gridColumn, columnPropertyInfo, columnLayoutInfo.Name); } else { gridColumn.OptionsColumn.ReadOnly = !columnPropertyInfo.CanEdit; if (columnPropertyInfo.CanEdit) { if (columnPropertyInfo.IsKey) { gridColumn.AppearanceHeader.Font = new Font(gridColumn.AppearanceHeader.Font, System.Drawing.FontStyle.Bold); gridColumn.AppearanceHeader.ForeColor = Color.Red; //不可重复项目为红色而且是粗体。 } else if (!columnPropertyInfo.IsNull) { gridColumn.AppearanceHeader.ForeColor = Color.Red; //红色为必填项 } else { gridColumn.AppearanceHeader.ForeColor = Color.Blue; //蓝色为可编辑项 } } else { //gridColumn.OptionsColumn.AllowFocus = true; gridColumn.OptionsColumn.AllowEdit = false; gridColumn.AppearanceCell.Font = new Font(gridColumn.AppearanceCell.Font, System.Drawing.FontStyle.Bold); gridColumn.AppearanceCell.BackColor = Color.WhiteSmoke; } } if (columnLayoutInfo != null) { XtraGridViewHelper.Instance.SetColumnDisplayFormat(gridColumn, columnPropertyInfo, columnLayoutInfo); } }
/// <summary> /// 根据配置的XML文件设置列的信息。 /// </summary> /// <param name="gridColumn"></param> /// <param name="columnPropertyInfo"></param> /// <param name="columnLayoutInfo"></param> /// <param name="gridViewLayoutInfo"></param> public void SetEditColumn(DevExpress.XtraGrid.Columns.GridColumn gridColumn, MB.WinBase.Common.ColumnPropertyInfo columnPropertyInfo, MB.WinBase.Common.GridColumnLayoutInfo columnLayoutInfo) { SetEditColumn(gridColumn, columnPropertyInfo, columnLayoutInfo, null); }