public ListColumns GetColumnsForType(Type type, ControllerContext controllerContext)
        {
            var columns = new ListColumns();
            var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, type);
            var sortingValues = GetSortingValues(controllerContext);

            foreach(var metadata in modelMetadata.Properties)
            {
                if(metadata.IsHidden()) continue;

                var column = new ListColumn
                                 {
                                     DisplayName = metadata.GetDisplayName(),
                                     Name = metadata.PropertyName,
                                     IsSearchable = metadata.IsSearchable(),
                                     Order = metadata.Order,
                                     SortDirection = sortingValues.SortDirection,
                                     Type = metadata.ModelType,
                                 };

                column.CellTemplate = FindCellTemplate(controllerContext, column.Name);
                column.HasCellTemplate = column.CellTemplate != null;
                column.IsSorted = column.Name.Equals(sortingValues.SortBy, StringComparison.InvariantCultureIgnoreCase);
                column.SortUrl = GetSortUrlForColumn(controllerContext, column, sortingValues);
                column.HeaderTemplate = FindHeaderTemplate(controllerContext, column.Name);
                column.HasHeaderTemplate = column.HeaderTemplate != null;

                columns.Add(column);
            }

            return columns;
        }
Ejemplo n.º 2
0
 protected void AddListColumn <TProperty>(Expression <Func <TE, TProperty> > navigationPropertyPath)
 {
     ListColumns.Add(SymbolExtensions.GetPropertyInfo(navigationPropertyPath));
 }