Пример #1
0
        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);

        }
Пример #2
0
 public CRColumnItem(IPageableList model, ColumnCollection columns) : base(model, columns)
 {
 }
Пример #3
0
 public ColumnItem(IPageableList model, ColumnCollection columns)
 {
     _model = model;
     _parentCollection = columns;
 }
Пример #4
0
 /// <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);
 }
Пример #5
0
        /// <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);
            }
        }
Пример #6
0
 /// <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;
 }
Пример #7
0
 public static ColumnItem CreateColumn(IPageableList owner, ColumnCollection columns, CrossRefFieldAttribute crossRef = null)
 {
     return crossRef != null ? new CRColumnItem(owner, columns) : new ColumnItem(owner, columns);
 }
Пример #8
0
 public static void AddColumns(this ColumnCollection columns, Type itemType, IPageableList owner, string prefix = null, string tableName = null)
 {
     AddColumnsInternal(columns, itemType, owner, prefix, tableName);
 }