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