public static void SetError(VGridControl vgrid, string FieldName, string ErrMsg, OutputError Output)
 {
     switch (Output)
     {
         case OutputError.ERROR_PROVIDER:
             vgrid.SetRowError(vgrid.GetRowByFieldName(FieldName).Properties, ErrMsg);
             break;
     }
 }
        /// <summary>Kiểm tra và đánh dấu lỗi
        /// </summary>
        /// <returns></returns>
        public static bool ValidateRecord(VGridControl vgrid, FieldNameCheck[] CheckList)
        {
            if (CheckList == null) return true;
            bool flag = true;
            for (int i = 0; i < CheckList.Length; i++)
            {
                string FieldName = CheckList[i].FieldName;
                string Data = null;
                BaseRow br = vgrid.GetRowByFieldName(FieldName);
                Data = vgrid.GetCellDisplayText(br, 0);
                for (int j = 0; j < CheckList[i].Types.Length; j++)
                {
                    string ErrMsg = "";
                    if (CheckList[i].Subject != null)
                        ErrMsg = GetErrMsg(CheckList[i].Types[j], CheckList[i].Subject);
                    else
                        ErrMsg = CheckList[i].ErrMsgs[j];
                    switch (CheckList[i].Types[j])
                    {
                        #region 1. Số thực
                        case CheckType.DecGreaterZero:
                            if (HelpIsCheck.isDecGreater0(Data))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.DecGreater0:
                            if (HelpIsCheck.isDecGreater0(Data))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.DecGreaterEqual0:
                            if (HelpIsCheck.isDecGreaterEqual0(Data))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        #endregion
                        #region 1. Số nguyên
                        case CheckType.IntGreaterZero:
                            if (HelpIsCheck.isIntGreater0(Data))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.IntGreater0:
                            if (HelpIsCheck.isIntGreater0(Data))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.IntGreaterEqual0:
                            if (HelpIsCheck.isIntGreaterEqual0(Data))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        #endregion
                        #region 1. Email
                        case CheckType.RequireEmail:
                            if (Data != null && Data != "" && HelpIsCheck.isValidEmail(Data))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.OptionEmail:
                            if (Data == null || Data == "" || HelpIsCheck.isValidEmail(Data))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        #endregion
                        #region 1. Chuỗi
                        case CheckType.RequireMaxLength:
                            if (Data != null && Data != "" && HelpIsCheck.IsMaxLength(Data, (int)CheckList[i].Params[j]))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.OptionMaxLength:
                            if (Data == null || Data == "" || HelpIsCheck.IsMaxLength(Data, (int)CheckList[i].Params[j]))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        #endregion
                        #region 1. Date
                        case CheckType.RequireDate:
                            if (Data != null && Data != "" && br.Properties.Value is DateTime && !HelpIsCheck.isBlankDate((DateTime)br.Properties.Value))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.OptionDate:
                            if (Data == null || Data == "" || br.Properties.Value is DateTime)
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.DateALessB:
                            DateTime B;
                            if (CheckList[i].Params[j] is DateTime)
                                B = (DateTime)CheckList[i].Params[j];
                            else
                                B = (DateTime)vgrid.GetRowByFieldName(CheckList[i].Params[j].ToString()).Properties.Value;
                            if (HelpIsCheck.IsALessB((DateTime)br.Properties.Value, B))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        case CheckType.DateALessEqualB:
                            DateTime C;
                            if (CheckList[i].Params[j] is DateTime)
                                C = (DateTime)CheckList[i].Params[j];
                            else
                                C = (DateTime)vgrid.GetRowByFieldName(CheckList[i].Params[j].ToString()).Properties.Value;
                            if (HelpIsCheck.IsALessEqualB((DateTime)br.Properties.Value, C))
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        #endregion
                        #region 1. Danh mục
                        case CheckType.RequiredID:
                            long ID = HelpNumber.DecimalToInt64(Data);
                            if (ID > 0)
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                SetError(vgrid, FieldName, ErrMsg);
                                flag = false;
                            }
                            break;
                        #endregion
                        #region 1. Other
                        case CheckType.Required:
                            if (Data != null && Data != "" && Data != "-1")
                            {
                                ClearError(vgrid, FieldName);
                            }
                            else
                            {
                                //PHUOCNT TODO Kiem tra lai
                                if (vgrid.GetCellValue(br, 0) == null)
                                {
                                    SetError(vgrid, FieldName, ErrMsg);
                                    flag = false;
                                }
                                else
                                {
                                    ClearError(vgrid, FieldName);
                                }
                            }
                            break;
                        #endregion
                    }

                    if (vgrid.HasRowErrors) break;
                }
            }
            return flag;
        }