Beispiel #1
0
        private void ApplyColumnAnnotationSettings(IGridColumn <T> column, GridColumnAttribute options)
        {
            column.Encoded(options.EncodeEnabled)
            .Sanitized(options.SanitizeEnabled)
            .Filterable(options.FilterEnabled)
            .Sortable(options.SortEnabled);

            GridSortDirection?initialDirection = options.GetInitialSortDirection();

            if (initialDirection.HasValue)
            {
                column.SortInitialDirection(initialDirection.Value);
            }

            if (!string.IsNullOrEmpty(options.FilterWidgetType))
            {
                column.SetFilterWidgetType(options.FilterWidgetType);
            }

            if (!string.IsNullOrEmpty(options.Format))
            {
                column.Format(options.Format);
            }
            if (!string.IsNullOrEmpty(options.Title))
            {
                column.Titled(options.Title);
            }
            if (!string.IsNullOrEmpty(options.Width))
            {
                column.Width = options.Width;
            }
        }
Beispiel #2
0
        /// <summary>
        ///     Creates column from property info using reflection
        /// </summary>
        public IGridColumn <T> CreateColumn(PropertyInfo pi)
        {
            if (!_annotations.IsColumnMapped(pi))
            {
                return(null); //grid column not mapped
            }
            IGridColumn <T>     column;
            GridColumnAttribute columnOpt = _annotations.GetAnnotationForColumn <T>(pi);

            if (columnOpt != null)
            {
                column = CreateColumn(pi, false);
                ApplyColumnAnnotationSettings(column, columnOpt);
            }
            else
            {
                GridHiddenColumnAttribute columnHiddenOpt = _annotations.GetAnnotationForHiddenColumn <T>(pi);
                if (columnHiddenOpt != null)
                {
                    column = CreateColumn(pi, true);
                    ApplyHiddenColumnAnnotationSettings(column, columnHiddenOpt);
                }
                else
                {
                    column = CreateColumn(pi, false);
                    ApplyColumnAnnotationSettings(column, new GridColumnAttribute());
                }
            }
            return(column);
        }
Beispiel #3
0
 public GridColumn(GridModel gridModel, GridColumnAttribute att, string propertyName, int order)
 {
     this.GridModel       = gridModel;
     this.ColumnAttribute = att;
     this.PropertyName    = propertyName;
     this.Order           = order;
 }
        public GridColumnAttribute GetAnnotationForColumn <T>(PropertyInfo pi)
        {
            pi = GetMetadataProperty <T>(pi);

            var gridAttr = pi.GetAttribute <GridColumnAttribute>();

            GridColumnAttribute dataAnnotationAttr = gridAttr;

            DataAnnotationsOptions dataAnnotations = ExtractDataAnnotations(pi);

            if (dataAnnotations != null)
            {
                if (gridAttr == null)
                {
                    dataAnnotationAttr = new GridColumnAttribute
                    {
                        Title         = dataAnnotations.DisplayName,
                        FilterEnabled = dataAnnotations.FilterEnabled ?? false,
                        Format        = dataAnnotations.Format
                    };
                }
                else
                {
                    dataAnnotationAttr.Title         = string.IsNullOrEmpty(gridAttr.Title) ? dataAnnotations.DisplayName : gridAttr.Title;
                    dataAnnotationAttr.FilterEnabled = dataAnnotations.FilterEnabled ?? gridAttr.FilterEnabled;
                    dataAnnotationAttr.Format        = string.IsNullOrEmpty(gridAttr.Format) ? dataAnnotations.Format : gridAttr.Format;
                }
            }
            return(dataAnnotationAttr);
        }
Beispiel #5
0
        private void ApplyColumnAnnotationSettings(IGridColumn <T> column, GridColumnAttribute options)
        {
            column.Encoded(options.EncodeEnabled)
            .Sanitized(options.SanitizeEnabled)
            .Filterable(options.FilterEnabled)
            .Sortable(options.SortEnabled);

            GridSortDirection?initialDirection = options.GetInitialSortDirection();

            if (initialDirection.HasValue)
            {
                column.SortInitialDirection(initialDirection.Value);
            }

            GridAggregateFunction?aggregateValue = options.GetAggregateFunction();

            if (aggregateValue.HasValue)
            {
                column.Aggregate(aggregateValue.Value);
            }

            if (!string.IsNullOrEmpty(options.FilterWidgetType))
            {
                column.SetFilterWidgetType(options.FilterWidgetType);
            }

            if (!string.IsNullOrEmpty(options.Format))
            {
                column.Format(options.Format);
            }
            if (!string.IsNullOrEmpty(options.Title))
            {
                column.Titled(options.Title);
            }
            if (!string.IsNullOrEmpty(options.Width))
            {
                column.Width = options.Width;
            }
            if (!string.IsNullOrEmpty(options.ToolTip))
            {
                column.ToolTip = options.ToolTip;
            }
            if (!string.IsNullOrEmpty(options.Css))
            {
                column.Css(options.Css);
            }
            if (!string.IsNullOrEmpty(options.BoolTrue))
            {
                column.BoolTrue = options.BoolTrue;
            }
            if (!string.IsNullOrEmpty(options.BoolFalse))
            {
                column.BoolFalse = options.BoolFalse;
            }
            if (!string.IsNullOrEmpty(options.AggregateFormat))
            {
                column.AggregateFormat = options.AggregateFormat;
            }
        }
        public void Constructor_CalledWithValidValue_Success()
        {
            var width = 50;
            var sut   = new GridColumnAttribute(width);

            Assert.IsNotNull(sut);
            Assert.AreEqual(width, sut.Width);
        }
Beispiel #7
0
        private static void GenerateColumns(GridControl grid)
        {
            ICollection list = grid.ItemsSource as ICollection;

            if (list == null || list.Count == 0)
            {
                return;
            }
            grid.Columns.Clear();
            IEnumerator enumarator = list.GetEnumerator();

            enumarator.MoveNext();
            Type listItemType = enumarator.Current.GetType();

            PropertyInfo[]             properties = listItemType.GetProperties();
            List <GridColumnAttribute> columns    = new List <GridColumnAttribute>();

            foreach (PropertyInfo propertyInfo in properties)
            {
                GridColumnAttribute gridColumnAttribute = propertyInfo.GetCustomAttribute <GridColumnAttribute>();
                if (gridColumnAttribute != null)
                {
                    gridColumnAttribute.Header    = gridColumnAttribute.Header ?? propertyInfo.Name;
                    gridColumnAttribute.FieldName = gridColumnAttribute.FieldName ?? propertyInfo.Name;
                    columns.Add(gridColumnAttribute);
                }
            }
            columns.Sort((o, t) => {
                if (o.Order == 0 && t.Order == 0)
                {
                    return(0);
                }
                if (o.Order == 0)
                {
                    return(1);
                }
                if (t.Order == 0)
                {
                    return(-1);
                }
                return(o.Order.CompareTo(t.Order));
            });
            foreach (GridColumnAttribute columnAttribute in columns)
            {
                GridColumn column = new GridColumn();
                column.Header    = columnAttribute.Header;
                column.FieldName = columnAttribute.FieldName;
                column.Name      = columnAttribute.FieldName;
                grid.Columns.Add(column);
            }
        }
Beispiel #8
0
        private void ResultsGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            var column = new DataGridTextColumn();

            column.Header  = e.PropertyName;
            column.Binding = new System.Windows.Data.Binding(e.PropertyName);
            string units = "km";

            if (Unit == Units.Mile)
            {
                units = "m";
            }
            if (e.PropertyName == "Distance")
            {
                column.Binding.StringFormat = "{0:0.##} " + units;
            }

            GridColumnAttribute attr = null;

            if (Service == Services.GP)
            {
                attr = Models.Utilities.GetGridColumnAttribute(e.PropertyName, typeof(GpPractice));
            }
            else if (Service == Services.Schools)
            {
                attr = Models.Utilities.GetGridColumnAttribute(e.PropertyName, typeof(School));
            }
            else if (Service == Services.Dentists)
            {
                attr = Models.Utilities.GetGridColumnAttribute(e.PropertyName, typeof(Dentist));
            }
            if (attr != null)
            {
                e.Cancel      = !attr.IsDisplayed;
                column.Header = attr.Name;
            }
            e.Column = column;
        }
Beispiel #9
0
 public ActionGridColumn(GridModel gridModel, GridColumnAttribute att, string propertyName, int order)
     : base(gridModel, att, propertyName, order)
 {
 }
        public static void GenerateColumns(ObservableCollection <DataGridColumn> columns, GridSettings gridSettings)
        {
            try
            {
                try
                {
                    columns.Clear();
                }
                catch (ArgumentOutOfRangeException)
                {
                    // DataGrid or DataGridColumn issue?
                    // Saving VisualStudio|Options|BuildVision settings causes ArgumentOutOfRangeException (DisplayIndex)
                    // at columns.Clear if BuildVision toolwindow was hidden since VisualStudio start (only in this case).
                    // For the second time without any errors.
                    columns.Clear();
                }

                var tmpColumnsList = new List <DataGridColumn>();
                foreach (PropertyInfo property in GetItemProperties())
                {
                    GridColumnAttribute columnConfiguration = property.GetCustomAttribute <GridColumnAttribute>();
                    if (columnConfiguration == null)
                    {
                        continue;
                    }

                    string             propertyName = property.Name;
                    GridColumnSettings columnSettings;

                    if (gridSettings.Columns[propertyName] != null)
                    {
                        columnSettings = gridSettings.Columns[propertyName];
                    }
                    else
                    {
                        columnSettings = new GridColumnSettings(
                            propertyName,
                            columnConfiguration.Header,
                            columnConfiguration.Visible,
                            columnConfiguration.DisplayIndex,
                            columnConfiguration.Width,
                            columnConfiguration.ValueStringFormat);
                        gridSettings.Columns.Add(columnSettings);
                    }

                    DataGridBoundColumn column = CreateColumn(property);
                    InitColumn(column, columnConfiguration, columnSettings, gridSettings.SortDescription);
                    tmpColumnsList.Add(column);
                }

                tmpColumnsList.Sort((col1, col2) => col1.DisplayIndex.CompareTo(col2.DisplayIndex));
                for (int i = 0; i < tmpColumnsList.Count; i++)
                {
                    var column = tmpColumnsList[i];

                    // We aren't able to afford coincidence of indexes, otherwise UI will hang.
                    column.DisplayIndex = i;
                    columns.Add(column);
                }
            }
            catch (Exception ex)
            {
                ex.TraceUnknownException();
            }
        }
        private static void InitColumn(
            DataGridBoundColumn column,
            GridColumnAttribute columnConfiguration,
            GridColumnSettings columnSettings,
            SortDescription sortDescription)
        {
            if (string.IsNullOrEmpty(columnConfiguration.ImageKey))
            {
                column.Header = columnSettings.Header;
            }
            else if (columnConfiguration.ImageKey == GridColumnAttribute.EmptyHeaderImageKey)
            {
                column.Header = null;
            }
            else
            {
                const int ImgHeight = 14;
                const int ImgWidth  = 14;

                if (string.IsNullOrEmpty(columnConfiguration.ImageDictionaryUri))
                {
                    var imgRes = Resources.ResourceManager.GetObject(columnConfiguration.ImageKey);
                    var img    = (System.Drawing.Bitmap)imgRes;
                    column.Header = new Image
                    {
                        Source  = img.ToMediaBitmap(),
                        Width   = ImgWidth,
                        Height  = ImgHeight,
                        Stretch = Stretch.Uniform,
                        Tag     = columnSettings.Header
                    };
                }
                else
                {
                    var controlTemplate = VectorResources.TryGet(columnConfiguration.ImageDictionaryUri, columnConfiguration.ImageKey);
                    column.Header = new ContentControl
                    {
                        Template     = controlTemplate,
                        Width        = ImgWidth,
                        Height       = ImgHeight,
                        ClipToBounds = true,
                        Tag          = columnSettings.Header
                    };
                }
            }

            column.Visibility = columnSettings.Visible ? Visibility.Visible : Visibility.Collapsed;

            if (columnSettings.DisplayIndex != -1)
            {
                column.DisplayIndex = columnSettings.DisplayIndex;
            }

            if (!double.IsNaN(columnSettings.Width))
            {
                column.Width = new DataGridLength(columnSettings.Width);
            }

            if (columnSettings.ValueStringFormat != null)
            {
                column.Binding.StringFormat = columnSettings.ValueStringFormat;
            }

            if (column.GetBindedProperty() == sortDescription.SortPropertyName)
            {
                column.SortDirection = sortDescription.SortOrder.ToSystem();
            }

            string columnName = columnSettings.Header;

            if (string.IsNullOrEmpty(columnName))
            {
                columnName = columnConfiguration.Header;
            }

            column.SetValue(DataGridColumnExtensions.NameProperty, columnName);
        }
Beispiel #12
0
 public Element_Name_GridColumn(GridModel gridModel, GridColumnAttribute att, string propertyName, int order)
     : base(gridModel, att, propertyName, order)
 {
 }
Beispiel #13
0
 public Page_Navigation_ShowInMenu_SortableGridColumn(GridModel gridModel, GridColumnAttribute att, string propertyName, int order)
     : base(gridModel, att, propertyName, order)
 {
 }