Пример #1
0
        /// <summary>
        /// Maps a property.
        /// </summary>
        protected virtual void InjectMember(object source, object target, Type targetType)
        {
            var properties = FWReflectionHelper.GetPublicProperties(targetType, false);

            InjectMemberProperties(source, target, properties);

            InjectPrivateMembers(source, target, targetType);
        }
        /// <summary>
        /// Creates a new DetailGrid control.
        /// </summary>
        /// <param name="requestContext">The request helper.</param>
        /// <param name="model">The current model.</param>
        /// <param name="metadata">The model metadata.</param>
        public FWDetailGridControl(FWRequestContext requestContext, IEnumerable model, ModelMetadata metadata)
            : base(requestContext, model, metadata)
        {
            _listType = metadata.ModelType.GenericTypeArguments.FirstOrDefault();
            if (_listType == null)
            {
                throw new FWInvalidModelException("Detail Grid model must be a generic list.");
            }

            _properties  = FWReflectionHelper.GetPublicProperties(_listType).Where(f => !f.IsDefined(typeof(FWDatasourceAttribute)));
            _modelPrefix = metadata.PropertyName;

            _parentType = metadata.ContainerType ?? metadata.ModelType;
        }
Пример #3
0
        /// <summary>
        /// Generates the columns from the model metadata.
        /// </summary>
        protected virtual void GenerateColumnsFromMetadata()
        {
            // Gets the properties
            IEnumerable <PropertyInfo> properties = FWReflectionHelper.GetPublicProperties(ListType);

            // Finds the property metadata
            ModelMetadata listMetadata = RequestContext.MetadataProvider.GetMetadataForType(ListType);

            // Creates all data columns
            foreach (var prop in properties)
            {
                var itemMetadata = listMetadata.Properties.Where(f => f.PropertyName == prop.Name).First();

                if (!itemMetadata.AdditionalValues.ContainsKey(nameof(FWDatasourceAttribute)))
                {
                    FWTableColumn column = CreateColumn(itemMetadata, prop);
                    column.Property = prop;

                    Columns.Add(column);
                }
            }
        }