public virtual IQueryable GetComboBoxSource( PropertyMetaData propertyMetaData, bool onlyActive, string filter) { var relatedMeta = MetaDataProvider.Get( propertyMetaData.ForeignType()); var idProperty = LinqToSqlUtils.GetPKPropertyName(relatedMeta.EntityType); var selector = "new(" + idProperty + " as " + propertyMetaData.Info.Name + ", " + relatedMeta.DisplayProperty().Name + ")"; var result = DynamicRepository.GetAll(propertyMetaData.ForeignType()); if (filter != null) { result = result.Where(filter); } /* if(onlyActive) * foreach (var property in Const.Common.ActiveProperties) * { * if(propertyMetaData.ForeignType.HasProperty(property)) * result = result.Where(property); * }*/ return(result.Select(selector)); }
private static List <SelectListItem> GetSelectedListItems( PropertyMetaData property, System.Collections.IEnumerable source) { var result = new List <SelectListItem>(); var relatedPropertyType = property.ForeignType(); var foreignMetaData = MetaDataProvider.Get(relatedPropertyType); var first = true; PropertyInfo propertyInfo = null; foreach (var o in source) { object id; if (first) { propertyInfo = o.GetType().GetProperty(property.Info.Name); first = false; } if (propertyInfo != null) { id = o.GetValue(property.Info.Name); } else { id = o.GetValue(LinqToSqlUtils.GetPKPropertyName( foreignMetaData.EntityType)); } result.Add(new SelectListItem { Text = GetDisplay(o, foreignMetaData).ToString(), Value = id.ToString() }); } return(result.OrderBy(sli => sli.Text).ToList()); }
public string GetSelector(PropertyMetaData propertyMetaData, bool withoutProperty) { var relatedMeta = MetaDataProvider.Get(propertyMetaData.ForeignType()); var property = string.Empty; if (!withoutProperty && propertyMetaData.ForeignInfo() != null) { property = propertyMetaData.ForeignInfo().Name + "."; } var idProperty = property + LinqToSqlUtils.GetPKPropertyName(relatedMeta.EntityType); return("new(" + idProperty + " as " + propertyMetaData.Info.Name + ", " + property + relatedMeta.DisplayProperty().Name + ")"); }
private void AddFilterValueToSource(PropertyMetaData propertyMetaData, object filterValue, ICollection <object> source) { var nameValue = source.Where(o => o.GetValue(propertyMetaData.Info.Name) .Equals(filterValue)); if (nameValue.Count() == 0) { var foreignType = propertyMetaData.ForeignType(); // if(propertyMetaData.ForeignInfo() != null) var item = DynamicRepository.GetAll( foreignType) .Where(LinqToSqlUtils .GetPKPropertyName(foreignType) + "= @0", filterValue) .Select(GetSelector(propertyMetaData, true)) .Cast <object>().First(); /* else { * item = DynamicRepository.GetByPK( foreignType, filterValue); }*/ source.Add(item); } }
public static object GetValueForProperty(PropertyMetaData property, object item, UrlHelper url) { object value; if (property.Control() == Controls.Select) { var foreignType = property.ForeignType(); var foreignMetaData = MetaDataProvider.Get( foreignType); object foreignValue = null; if (property.ForeignInfo() != null) { foreignValue = item.GetValue(property.ForeignInfo().Name); } else { var id = item.GetValue(property.Name); if (id != null) { foreignValue = DynamicRepository.GetByPK(foreignType, id); } } Contract.NotNull(new { foreignMetaData }, new { foreignType }); if (!foreignMetaData.IsReadOnly()) { value = new ListVM.EntityLink( foreignValue, foreignMetaData, url); } else { value = GetDisplay(foreignValue); } } else { var metaData = MetaDataProvider.Get(item.GetType()); if (metaData.DisplayProperty() != null && property.Name == metaData.DisplayProperty().Name) { value = new ListVM.EntityLink(item, metaData, url); } else { var propertyValue = property.Info.GetValue(item); if (property.GetAttribute <FullLengthStringDisplayAttribute>() != null) { value = propertyValue.NotNullString(); } else { value = GetDisplay(propertyValue); if (property.Format() != null) { value = value.NotNullString(property.Format()); } } } } return(value); }