private static void AddColumnsInternal(ColumnCollection columns, Type itemType, IPageableList owner, string prefix = null, string tableName = null) { var props = itemType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy); foreach (var prop in props) { if (prop.Name == Constants.BaseInfoPropertyName) // Add columns from the "base" classes { var method = prop.PropertyType.GetMethod("GetProcessDefinition", BindingFlags.Static | BindingFlags.Public); var procDefinition = method.Invoke(null, BindingFlags.InvokeMethod, null, null, null); var table = ((ProcessDefinition)procDefinition).TableList.Last().Name; AddColumnsInternal(columns,prop.PropertyType, owner, string.IsNullOrEmpty(prefix) ? Constants.BaseInfoPropertyName : string.Format("{0}.{1}", prefix, Constants.BaseInfoPropertyName), table); } var display = (from d in prop.GetCustomAttributes(typeof(DisplayAttribute), false) select d).FirstOrDefault(); var crossRef = (CrossRefFieldAttribute) (from d in prop.GetCustomAttributes(typeof(CrossRefFieldAttribute), false) select d).FirstOrDefault(); if (display == null || string.IsNullOrEmpty(((DisplayAttribute)display).Name)) continue; var column = ColumnFactory.CreateColumn(owner, columns, crossRef); column.Header = ((DisplayAttribute) display).Name; //ColumnName = // (crossRef == null || string.IsNullOrWhiteSpace(crossRef.RefFieldName)) // ? prop.Name // : crossRef.RefFieldName, column.ReferenceTableName = (crossRef == null || string.IsNullOrWhiteSpace(crossRef.ReferenceTableName)) ? string.Empty : crossRef.ReferenceTableName; //Width = getWidth(prop), column.IsBase = !string.IsNullOrWhiteSpace(prefix); column.ColumnName = prop.Name; column.Property = prop; column.Prefix = prefix; column.TableName = tableName; column.Width = prop.PropertyType == typeof (string) ? 200 : 50; // this cycle is need only to display hyperlink column for field file. // search for an item with the equals name, but only at the end + "Url", // if found, write AdditionalDataPropertyName item name + "Url" foreach (var prop1 in props) { if (prop1.Name.EndsWith("Url") && prop1.Name.Remove(prop1.Name.Length - 3, 3) == prop.Name) { column.AdditionalDataPropertyName = prop1.Name; break; } } columns.Add(column); } //RaisePropertyChanged(() => Columns); }
public CRColumnItem(IPageableList model, ColumnCollection columns) : base(model, columns) { }
public ColumnItem(IPageableList model, ColumnCollection columns) { _model = model; _parentCollection = columns; }
/// <summary> /// Adds the columns. /// </summary> /// <param name="columns">The columns.</param> /// <param name="itemType">Type of the item.</param> /// <param name="owner">The owner.</param> /// <param name="prefix">The prefix.</param> /// <param name="tableName">Name of the table.</param> /// <param name="forFilter">if set to <c>true</c> [for filter].</param> /// <param name="displayColumns">The display columns.</param> public void AddColumns(ColumnCollection columns, Type itemType, IPageableList owner, string prefix = null, string tableName = null, bool forFilter = false, string[] displayColumns = null) { columns.AddColumns(itemType, owner, prefix, tableName, forFilter, displayColumns); }
/// <summary> /// Adds the display list columns. /// </summary> /// <param name="columns">The columns.</param> /// <param name="itemType">Type of the item.</param> /// <param name="owner">The owner.</param> public static void AddDisplayListColumns(this ColumnCollection columns, Type itemType, IPageableList owner) { if (itemType == null) return; if (columns == null) return; var columnOut = new ColumnCollection(); var props = itemType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy); foreach (var prop in props) { if (prop.Name.Equals("DLOrderId")) continue; var display = (DisplayAttribute)(from d in prop.GetCustomAttributes(typeof(DisplayAttribute), false) select d).FirstOrDefault(); if (display == null || string.IsNullOrEmpty(display.Name)) continue; var column = ColumnFactory.CreateColumn(owner, columnOut); column.Header = display.GetName(); column.ColumnName = prop.Name; column.Property = prop; var orderId = display.GetOrder() ?? 0; column.Order = orderId; columnOut.Add(column); } foreach (var columnItem in columnOut.OrderBy(d => d.Order)) { columns.Add(columnItem); } }
/// <summary> /// Initializes a new instance of the <see cref="PageItem"/> class. /// </summary> /// <param name="model">The model.</param> public PageItem(IPageableList model) { //TODO: Replace with interface _model = model; }
public static ColumnItem CreateColumn(IPageableList owner, ColumnCollection columns, CrossRefFieldAttribute crossRef = null) { return crossRef != null ? new CRColumnItem(owner, columns) : new ColumnItem(owner, columns); }
public static void AddColumns(this ColumnCollection columns, Type itemType, IPageableList owner, string prefix = null, string tableName = null) { AddColumnsInternal(columns, itemType, owner, prefix, tableName); }