//验证字符窜处理相关...
        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);
        }
Example #3
0
        //创建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);
        }
Example #5
0
        /// <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));
 }
Example #10
0
        /// <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();
        }
Example #11
0
 //创建一个编辑的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));
 }
Example #12
0
        /// <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);
            }
        }
Example #13
0
 /// <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);
 }