protected override AutoGeneratedField CreateAutoGeneratedRow(AutoGeneratedFieldProperties fieldProperties)
        {
            // Create an AutoGeneratedField object.
            AutoGeneratedField field = new AutoGeneratedField(fieldProperties.DataField);

            // Set the properties of the AutoGeneratedField using
            // the values from the AutoGeneratedFieldProperties
            // object contained in the fieldProperties parameter.
            ((IStateManager)field).TrackViewState();
            field.HeaderText     = fieldProperties.Name;
            field.SortExpression = fieldProperties.Name;
            field.ReadOnly       = fieldProperties.IsReadOnly;
            field.DataType       = fieldProperties.Type;

            return(field);
        }
Exemple #2
0
        private object GetFieldValue(AutoGeneratedFieldProperties property, object obj, RecordField field)
        {
            if (field != null && !string.IsNullOrEmpty(field.ServerMapping))
            {
                string[] mapping = field.ServerMapping.Split('.');
                if (mapping.Length > 1)
                {
                    for (int i = 0; i < mapping.Length; i++)
                    {
                        PropertyInfo p = obj.GetType().GetProperty(mapping[i]);
                        obj = p.GetValue(obj, null);
                        if (obj == null)
                        {
                            return(null);
                        }
                    }

                    return(obj);
                }
            }

            return(DataBinder.GetPropertyValue(obj, property.DataField));
        }
Exemple #3
0
        private object GetFieldValue(AutoGeneratedFieldProperties property, object obj, RecordField field, System.Data.DataRow dataRow)
        {
            if (field != null && field.ServerMapping.IsNotEmpty())
            {
                string[] mapping = field.ServerMapping.Split('.');

                if (mapping.Length > 1)
                {
                    for (int i = 0; i < mapping.Length; i++)
                    {
                        if (dataRow != null && dataRow.IsNull(mapping[i]))
                        {
                            return(null);
                        }

                        PropertyInfo p = obj.GetType().GetProperty(mapping[i]);
                        try
                        {
                            obj = p.GetValue(obj, null);
                        }
                        catch (NullReferenceException e)
                        {
                            throw new NullReferenceException(String.Format("Mapped property '{0}' doesn't exist", mapping[i]));
                        }

                        if (obj == null)
                        {
                            return(null);
                        }
                    }

                    return(obj);
                }
            }

            return((dataRow != null && dataRow.IsNull(property.DataField)) ? null : DataBinder.GetPropertyValue(obj, property.DataField));
        }
Exemple #4
0
        protected override AutoGeneratedField CreateAutoGeneratedColumn(AutoGeneratedFieldProperties fieldProperties)
        {
            if (this.DesignMode)
            {
                return(base.CreateAutoGeneratedColumn(fieldProperties));
            }

            AutoGeneratedField tmpAutoGeneratedField = new AutoGeneratedField(fieldProperties.DataField);
            string             strFieldName          = fieldProperties.Name;

            if (this.AllowSorting)
            {
                tmpAutoGeneratedField.SortExpression = strFieldName;
            }
            tmpAutoGeneratedField.ReadOnly = fieldProperties.IsReadOnly;
            tmpAutoGeneratedField.DataType = fieldProperties.Type;

            if (fieldProperties.DataField == this.DataTextField)
            {
                tmpAutoGeneratedField.HeaderText = "Name";
                return(tmpAutoGeneratedField);
            }
            else if (fieldProperties.DataField == this.DataValueField)
            {
                tmpAutoGeneratedField.HeaderText = "ID";
                return(tmpAutoGeneratedField);
            }
            else if (fieldProperties.DataField == this.DataCodeField)
            {
                tmpAutoGeneratedField.HeaderText = "Code";
                return(tmpAutoGeneratedField);
            }
            else
            {
                return(null);
            }
        }
Exemple #5
0
        AutoGeneratedFieldProperties[] CreateAutoFieldProperties(IEnumerable source, IEnumerator en)
        {
            Data     = null;
            JsonData = string.Empty;

            if (this.SerializationMode == SerializationMode.Complex)
            {
                Data = source;
                return(null);
            }

            if (source == null)
            {
                return(null);
            }

            if (source is string && source.ToString().StartsWith("http"))
            {
                this.JsonData = string.Format("'{0}'", source);
                this.IsUrl    = true;
                return(null);
            }

            ITypedList typed = source as ITypedList;
            PropertyDescriptorCollection props = typed == null ? null : typed.GetItemProperties(new PropertyDescriptor[0]);

            Type prop_type;

            ArrayList retVal = new ArrayList();


            if (props == null)
            {
                object fitem = null;
                prop_type = null;
                PropertyInfo prop_item = source.GetType().GetProperty("Item",
                                                                      BindingFlags.Instance | BindingFlags.Static |
                                                                      BindingFlags.Public, null, null,
                                                                      new Type[] { typeof(int) }, null);

                if (prop_item != null)
                {
                    prop_type = prop_item.PropertyType;
                    if (prop_type.IsInterface)
                    {
                        prop_type = null;
                    }
                }

                if (prop_type == null || prop_type == typeof(object))
                {
                    if (en.MoveNext())
                    {
                        fitem            = en.Current;
                        this.firstRecord = fitem;
                    }
                    if (fitem != null)
                    {
                        prop_type = fitem.GetType();
                    }
                }

                if (fitem != null && fitem is ICustomTypeDescriptor)
                {
                    props = TypeDescriptor.GetProperties(fitem);
                }
                else if (prop_type != null)
                {
                    if (IsBindableType(prop_type))
                    {
                        AutoGeneratedFieldProperties field = new AutoGeneratedFieldProperties();
                        ((IStateManager)field).TrackViewState();
                        field.Name      = "Item";
                        field.DataField = BoundField.ThisExpression;
                        field.Type      = prop_type;
                        retVal.Add(field);
                    }
                    else
                    {
                        if (prop_type.IsArray)
                        {
                            Data = source;
                            return(null);
                        }
                        else
                        {
                            props = TypeDescriptor.GetProperties(prop_type);
                        }
                    }
                }
            }

            if (props != null && props.Count > 0)
            {
                foreach (PropertyDescriptor current in props)
                {
                    if (this.IsBindableType(current.PropertyType) || this.IsComplexField(current.Name))
                    {
                        AutoGeneratedFieldProperties field = new AutoGeneratedFieldProperties();
                        field.Name      = current.Name;
                        field.DataField = current.Name;
                        retVal.Add(field);
                    }
                }
            }

            if (retVal.Count > 0)
            {
                return((AutoGeneratedFieldProperties[])retVal.ToArray(typeof(AutoGeneratedFieldProperties)));
            }

            return(null);
        }