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); }
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)); }
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)); }
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); } }
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); }