public static IFieldOptions Create(PropertyInfo property, IDisplayListItemList list) { var result = new DisplayListFieldOptions(); result.Columns = new List<ColumnItem>(); if (list != null) { Type baseType = list.GetType().BaseType; if (baseType != null) { Type itemType = baseType.GetGenericArguments()[1]; PropertyInfo[] properties = itemType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy); foreach (PropertyInfo prop in properties) { if (prop.Name.Equals("DLOrderId")) continue; var displayAttribute = (DisplayAttribute) (from d in prop.GetCustomAttributes(typeof (DisplayAttribute), false) select d).FirstOrDefault(); if (displayAttribute == null || string.IsNullOrEmpty(displayAttribute.Name)) continue; var column = new ColumnItem(); column.Header = displayAttribute.GetName(); column.ColumnName = prop.Name.ToCamelCase(); column.ColumnType = prop.GetFieldType().ToString(); column.SystemName = prop.Name; result.Columns.Add(column); } } } return result; }
public static IFieldOptions Create(PropertyInfo property, IDisplayListItemList list) { var dlAttribute = property.GetCustomAttributes(typeof(DisplayListFieldAttribute), false).Select(d => d).FirstOrDefault() as DisplayListFieldAttribute; var result = new DisplayListFieldOptions { RefProcess = dlAttribute != null ? dlAttribute.ReferenceTableName : null, Columns = new List<ColumnItem>(), IsSingleItemView = dlAttribute != null ? dlAttribute.IsSingleItemView : false, TotalRowCount = list.TotalRowCount }; Type baseType = list.GetType().BaseType; if (baseType != null) { Type itemType = baseType.GetGenericArguments()[1]; PropertyInfo[] properties = itemType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy); foreach (PropertyInfo prop in properties) { if (prop.Name.Equals("DLOrderId")) continue; var displayAttribute = (DisplayAttribute)(from d in prop.GetCustomAttributes(typeof(DisplayAttribute), false) select d).FirstOrDefault(); if (displayAttribute == null || string.IsNullOrEmpty(displayAttribute.Name)) continue; var column = new ColumnItem { Header = displayAttribute.GetName(), ColumnName = prop.Name.ToCamelCase(), ColumnType = prop.GetFieldType().ToString(), SystemName = prop.Name }; result.Columns.Add(column); } } return result; }