public DataItemField this[string fieldName] { get { DataItemField field = GetField(fieldName); return(field); } }
internal static DataItem GetDataItemFromSource(DataRow dr, DataSchema schema) { DataItem item = new DataItem(schema); for (int i = 0; i < schema.Fields.Length; i++) { if (!schema.Fields[i].Skip) { object v; string replaced = schema.Fields[i].GetAnyAttributeValue("replaced"); string defaultvalue = schema.Fields[i].GetAnyAttributeValue("default"); try { v = dr[schema.Fields[i].Source]; } catch (ArgumentException) { // 该列不存在 if (defaultvalue != null) { v = defaultvalue; } else { throw new Exception(string.Format("没有找到数据列'{0}'.", schema.Fields[i].Source)); } } // 如果存在被替换值和默认值,则将被替换值替换为默认值 if (!string.IsNullOrEmpty(v as string) && v != DBNull.Value && !string.IsNullOrEmpty(replaced) && replaced.IndexOf(v.ToString()) != -1 && defaultvalue != null) { v = defaultvalue; } DataItemField f = item.GetSourceField(schema.Fields[i].Source); f.Value = v; // 如果该项验证失败, 且为DataFixMode.Fix, 且有默认值, 则以默认值代替 if (!string.IsNullOrEmpty(schema.TransferMode) && schema.TransferMode.Equals("fix", StringComparison.InvariantCultureIgnoreCase) && defaultvalue != null) { ValidationResults vr = new ValidationResults(); f.DoValidate(vr); if (!vr.IsValid && f.Value as string != v) { f.Value = v; } } } } return(item); }
/// <summary> /// in case trim /// </summary> /// <param name="itemfield"></param> public static void AdjustDataItemFieldValue(DataItemField itemfield) { if (itemfield.Value == null) { return; } if (itemfield.Type.Equals(typeof(int).ToString())) { int val1; if (StringUtil.TryParseInt32(itemfield.Value.ToString(), out val1)) { itemfield.Value = val1; } else { throw new InvalidDataException( string.Format("fields value [{0}] can not parse as type of schema: name [{1}] index[{2}] type [{3}]", itemfield.Value, itemfield.Name, itemfield.Index, itemfield.Type)); } } else if (itemfield.Type.Equals(typeof(double).ToString())) { double val2; if (StringUtil.TryParseDouble(itemfield.Value.ToString(), out val2)) { itemfield.Value = val2; } else { throw new InvalidDataException( string.Format("fields value [{0}] can not parse as type of schema: name [{1}] index[{2}] type [{3}]", itemfield.Value, itemfield.Name, itemfield.Index, itemfield.Type)); } } else if (itemfield.Type.Equals(typeof(DateTime).ToString())) { DateTime val3; if (StringUtil.TryParseDateTime(itemfield.Value.ToString(), out val3)) { itemfield.Value = val3; } else { throw new InvalidDataException( string.Format("fields value [{0}] can not parse as type of schema: name [{1}] index[{2}] type [{3}]", itemfield.Value, itemfield.Name, itemfield.Index, itemfield.Type)); } } else if (itemfield.Type.Equals(typeof(string).ToString()) && itemfield.Value != null) { itemfield.Value = itemfield.Value.ToString().Trim(); } else { // TODO: handle more types } }