Example #1
0
        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 + ")");
        }
Example #2
0
        private IQueryable GetFilterComboBoxSource(PropertyMetaData propertyMetaData,
                                                   BaseMetaData metaData)
        {
            if (propertyMetaData.ForeignInfo() == null)
            {
                return(GetComboBoxSource(propertyMetaData, false));
            }
            string selector = GetSelector(propertyMetaData);

            return(DynamicRepository.GetAll(metaData.EntityType)
                   .Where(propertyMetaData.Info.Name + " != null")
                   .Select(selector)
                   .Cast <object>().Distinct());
        }
Example #3
0
        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);
        }