public Validation.ValidationResult validate(Lib.FieldInfo f, object value) { Validation.ValidationResult vr = new Validation.ValidationResult(); vr.validationSuccess = false; string s = ""; try { s = Convert.ToString(value); if (s.Length <= maxLength) { vr.validationSuccess = true; } else { vr.validationMsg = "Строка не должны быть длинее " + maxLength.ToString() + " символов"; } } catch { vr.validationMsg = "Ошибка проверки строки: функция strMaxLengthCheck"; } return(vr); }
Validation.ValidationResult _com_symbol_double(Lib.FieldInfo f, object value) { //посимвольный валидатор числа double //в поле можно вводить числа и сепаратор bool itsDigit; bool itsSeparator; string rez = ""; string source = Convert.ToString(value); string separator = Convert.ToString(this.separator); for (int i = 0; i < source.Length; i++) { itsDigit = "0123456789".Contains(source[i]); itsSeparator = (source[i].ToString() == separator); if (itsDigit || itsSeparator) { rez += source[i]; } } Validation.ValidationResult vr = new Validation.ValidationResult(); vr.validationSuccess = true; //символьная валидация всегда возвращает true и пакет символов, которые ее прошли vr.validatedValue = rez; return(vr); }
Validation.ValidationResult _priceLessThan60(Lib.FieldInfo f, object value) { Lib.CommonOperationResult convrez = Lib.convertedObjectRIFDCTypes(f.fieldType, value); if (!convrez.success) { return(Validation.ValidationResult.sayNo(convrez.msg)); } value = convrez.returnedValue; //этот метод проверяет число на положительность Validation.ValidationResult r = new Validation.ValidationResult(); r.validationSuccess = false; double i = Convert.ToDouble(value); if (i < 60) { r.validationSuccess = true; } else { r.validationMsg = "Цена большого латте должна быть не более 60 рэ"; } return(r); }
public static ValidationResult validate(Lib.FieldInfo f, ValidationTypeEnum validationType, object value) { ValidationResult vr = new ValidationResult(); List <IValidationFunction> tmp = null; switch (validationType) { case ValidationTypeEnum.business: tmp = f.validationInfo.businessValidationRuleFullList; break; case ValidationTypeEnum.leave: tmp = f.validationInfo.leaveValidationRuleFullList; break; case ValidationTypeEnum.symbol: tmp = f.validationInfo.symbolValidationRuleFullList; break; } vr.validatedValue = value; vr.validationSuccess = true; foreach (IValidationFunction ivf in tmp) { vr = ivf.validate(f, vr.validatedValue); if (vr.validationSuccess == false) { return(vr); //если какая -то из валидационных функций не пропустит, то выход } } return(vr); }
internal override void doSearch() { //функция, которая, собственно, парсит строку и выполняет поиск if (tbSearchStr == null) { return; } if (tbSearchStr.Text.Trim() == "") { return; } string[] s = tbSearchStr.Text.Split(' '); //теперь надо поиск. поиск может быть по всем словам (AND) или только по одному (OR) сделаем пока по AND //здесь по or, т.к. смысл такой, что поле А содержит слово, или поле Б содержит слово и т.д. Lib.Filter filter = new Lib.Filter(Lib.RIFDC_LogicalOperators.AND); //надо сегенить ФЕ вида (полеА-contains-слово1 AND полеА-contains-слово1) ... //List<Lib.FieldInfo> targetFields = parent.dataSource.sampleObject.fieldsInfo.getMySearchableFields(); Lib.FieldInfo f = parent.dataSource.sampleObject.fieldsInfo.getFieldInfoObjectByFieldClassName("searchable"); s.ToList().ForEach(piece => { filter.addNewFilteringRule(f, Lib.RIFDC_DataCompareOperatorEnum.contains, piece, Lib.Filter.FilteringRuleTypeEnum.SearchFilteringRule); }); parent.dataSource.filtration.resetSearshFilter(filtrationType); parent.applyLocalFilter(filter); }
public DataColumn addDataColumn(string srcFieldClassName, int colWidth, string caption = "") { Lib.FieldInfo f = t.fieldsInfo.getFieldInfoObjectByFieldClassName(srcFieldClassName); if (f == null) { fn.dp("Ошибка маппинга: не найден fieldInfo для поля " + srcFieldClassName); return(null); } if (caption == "") { caption = f.caption; } if (caption == "") { caption = srcFieldClassName; } DataColumn dc = new DataColumn(); dc.caption = caption; dc.srcDataFieldName = srcFieldClassName; dc.srcDataFieldType = f.fieldType; dc.colWidth = colWidth; dataColumns.Add(dc); return(dc); }
public Validation.ValidationResult validate(Lib.FieldInfo f, object value) { //оставляет в строке только буквы и пробелы Validation.ValidationResult vr = new Validation.ValidationResult(); Regex regex; string source = Convert.ToString(value); source = fn.strRemoveArrSymbols(source, @"\|/^"); regex = new Regex("[^a-zA-Zа-яА-Я0-9 ]", RegexOptions.IgnoreCase); source = regex.Replace(source, ""); vr.validatedValue = source; vr.validationSuccess = true; return(vr); }
private void Dgr_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (data.dataSource == null) { return; } //вот тут int col = e.ColumnIndex; //если индекс = 6, то column будет +1 //это имя поля try { string cName = data.dataColumns[col - 1].srcDataFieldName; Lib.FieldInfo f = data.dataSource.sampleObject.getFieldInfoByFieldClassName(cName); Lib.Sorter.SortingRule _x = data.dataSource.sort.myActualSorter.ruleOnTheField(f); Lib.Sorter myNewSorter = new Lib.Sorter(); Lib.AscDescSortEnum dir = Lib.AscDescSortEnum.Asc; if (_x != null) { if (_x.sortingDirection == Lib.AscDescSortEnum.NotSpecified || _x.sortingDirection == Lib.AscDescSortEnum.Desc) { dir = Lib.AscDescSortEnum.Asc; } else { dir = Lib.AscDescSortEnum.Desc; } } //Logger.log("GRIDSORT", f.fieldClassName +"___"+ dir.ToString()); myNewSorter.addNewSortingRule(f, dir); ImSorted(myNewSorter); setGridHeadersFromSorter(myNewSorter); //data.dataSource.sort.applySorter(myNewSorter); } catch (Exception e1) { //ну просто не будет сортировать fn.dp(e1.Message); } }
Validation.ValidationResult _correctDateEntered_ddmmyyy(Lib.FieldInfo f, object value) { //этот метод проверяет, что введена корректная дата dd mm yyyy Validation.ValidationResult r = new Validation.ValidationResult(); r.validationSuccess = false; if (f.fieldType != Lib.FieldTypeEnum.Date) { return(r); } DateTime dt; bool nullable = (f.nullabilityInfo.allowNull); bool isNull = (value == null); if (nullable && isNull) { return(Validation.ValidationResult.sayOk()); } if ((!nullable) && isNull) { return(Validation.ValidationResult.getInstance(true, "", f.nullabilityInfo.defaultValue)); } string[] formats = { "dd.MM.yyyy", "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy", "dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy" }; bool b1 = DateTime.TryParseExact(value.ToString(), formats, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt); // DateTime.TryParseExact(value.ToString(), "dd.MM.yyyy HH.mm.ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); //bool b2 = DateTime.TryParseExact(value.ToString(), "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt1); if (b1) { return(Validation.ValidationResult.getInstance(true, "", dt)); } else { //Logger.log("DATA", ""); return(Validation.ValidationResult.getInstance(false, "Необходимо ввести корректную дату")); } }
private Validation.ValidationResult _com_leave_double(Lib.FieldInfo f, object value) { //валидатор числа double с несколькими знаками после запятой и разделителем //оставить только один сепаратор, последний в строке //оставить указанное кол-во знаков после запятой //предполагается, что у нас там только числа и сепаратор, т.е. ввод фильтровался //value = Lib.convertedObjectRIFDCTypes(f.fieldType, value); bool itsSeparator; bool separatorFound = false; int digits; int sepPosition = -1; string source = Convert.ToString(value); string rez = ""; string A = ""; string B = ""; int i; Validation.ValidationResult vr = new Validation.ValidationResult(); string separator = this.separator.ToString(); digits = this.howMenyDigits; if (source.Length == 0) { //можно сразу выйти, т.к. нечего проверять vr.validationSuccess = true; return(vr); } //мы предполагаем, что есть 1 сепаратор, он последний в строке, и его надо оставить, остальные убрать //идем с конца строки for (i = source.Length - 1; i >= 0; i--) { itsSeparator = (source[i].ToString() == separator); if (!itsSeparator) { rez = source[i].ToString() + rez; } if (itsSeparator && (!separatorFound)) { separatorFound = true; rez = source[i].ToString() + rez; sepPosition = i; } if (itsSeparator && separatorFound) { //ничего не делаем, пропускаем, пишу это для ясности } } //теперь надо понять, какая часть целая, какая дробная source = rez; separatorFound = false; for (i = 0; i < source.Length; i++) { itsSeparator = (source[i].ToString() == separator); if (itsSeparator && (!separatorFound)) { separatorFound = true; } if (!itsSeparator && (!separatorFound)) { A += source[i].ToString(); } if (!itsSeparator && (separatorFound)) { B += source[i].ToString(); } } if (A == "") { A = "0"; } rez = A + ((B == "") ? "" : separator + B); //теперь округление double d = Convert.ToDouble(rez); if (digits < 0) { digits = 0; } d = Math.Round(d, digits, MidpointRounding.ToEven); rez = d.ToString(); //теперь такая штука: количество знаков после сепа должно быть = digits //если сепа нет - добавить sepPosition = rez.IndexOf(separator[0]); if (sepPosition == -1) { rez += separator; sepPosition = rez.Length - 1; } int n = digits - (rez.Length - sepPosition - 1); if (n > 0) { rez = rez + fn.strRepeater("0", n); } vr.validationSuccess = true; vr.validatedValue = rez; return(vr); }
public Validation.ValidationResult validate(Lib.FieldInfo f, object value) { return(_com_leave_double(f, value)); }
public Validation.ValidationResult validate(Lib.FieldInfo f, object value) { return(_correctDateEntered_ddmmyyy(f, value)); }
public Validation.ValidationResult validate(Lib.FieldInfo f, object value) { return(_priceLessThan60(f, value)); }
public Validation.ValidationResult validate(Lib.FieldInfo f, object value) { return(_com_symbol_int(f, value)); }
private DataGridViewRow readDataGridViewRow(IKeepable t, DataGridView _dg, DataGridViewRow dgr, bool reRead = false, string colorCode = "") { //читает row из объекта //теперь поехали перебирать колонки DataGridViewCell workingCell = null; ObjectParameters.ObjectParameter val = null; string stringValue = ""; bool readOnlyCell; Lib.FieldInfo f = null; DateTime dateTime; bool itsNull; for (int i = 0; i < data.dataColumns.Count; i++) { f = t.fieldsInfo.getFieldInfoObjectByFieldClassName(data.dataColumns[i].srcDataFieldName); if (f == null) { return(dgr); } itsNull = f.isNull; val = ObjectParameters.getObjectParameterByName(t, data.dataColumns[i].srcDataFieldName); switch (f.fieldType) { case Lib.FieldTypeEnum.Date: dateTime = Convert.ToDateTime(val.value); stringValue = (itsNull) ? "" : dateTime.ToString("dd.MM.yyyy"); break; case Lib.FieldTypeEnum.Time: dateTime = Convert.ToDateTime(val.value); stringValue = (itsNull) ? "" : dateTime.ToString("hh:mm:ss"); break; case Lib.FieldTypeEnum.DateTime: dateTime = Convert.ToDateTime(val.value); stringValue = (itsNull) ? "" : dateTime.ToString("dd.MM.yyyy hh:mm:ss"); break; case Lib.FieldTypeEnum.Int: case Lib.FieldTypeEnum.Double: stringValue = (itsNull) ? "" : fn.toStringNullConvertion(val.value); break; case Lib.FieldTypeEnum.String: case Lib.FieldTypeEnum.Memo: stringValue = (itsNull) ? "" : fn.toStringNullConvertion(val.value); break; default: stringValue = fn.toStringNullConvertion(val.value); break; } workingCell = reRead ? dgr.Cells[i + 1] : new DataGridViewTextBoxCell(); readOnlyCell = true; // (editabilityMode== DataGridEditabilityMode.NotEditableAtAll) ? false : switch (_dg.Columns[i + 1].CellType.Name) { case "DataGridViewTextBoxCell": workingCell.Value = (val == null) ? "" : (val.value == null ? "" : stringValue); break; case "DataGridViewCheckBoxCell": workingCell.Value = (val == null) ? false : (bool)val.value; //fn.dp("newCell.Value=" + newCell.Value.ToString()); break; //TODO здесь другие типы контролов } if (!reRead) { dgr.Cells.Add(workingCell); } workingCell.ReadOnly = readOnlyCell; } //раскраска //если пустая строка, убрать раскраску if (colorCode == "") { dgr.DefaultCellStyle.BackColor = Color.White; } if (paint != null) { Color c = paint.getMyColor(t); // fn.dp("COLOR=" + c.ToString()); //if (c==Color.White) fn.dp () dgr.DefaultCellStyle.BackColor = paint.getMyColor(t); } return(dgr); }