All of our grids have default display layout settings. As you know not all grids are created equal so the developer may need to change certain aspects of it. I tried creating a user control that could be dragged and dropped but the problem is it can only be maintained at the code level. The developer needs to see the changes at design time.
I created a grid overrides but it only works at the code level. The changes happen after the grid has been initialized.
private void GridOverrides() { this.ultraGrid1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.ultraGrid1.DisplayLayout.Appearance.BackColor = System.Drawing.SystemColors.Window; this.ultraGrid1.DisplayLayout.AutoFitStyle = AutoFitStyle.ExtendLastColumn; this.ultraGrid1.DisplayLayout.Appearance.BorderColor = System.Drawing.Color.Empty; this.ultraGrid1.DisplayLayout.BorderStyle = UIElementBorderStyle.Default; this.ultraGrid1.DisplayLayout.Override.SelectTypeRow = SelectType.Single; this.ultraGrid1.DisplayLayout.Override.AllowDelete = DefaultableBoolean.False; this.ultraGrid1.DisplayLayout.CaptionVisible = DefaultableBoolean.False; this.ultraGrid1.DisplayLayout.MaxColScrollRegions = 1; this.ultraGrid1.DisplayLayout.MaxRowScrollRegions = 1; this.ultraGrid1.DisplayLayout.NewColumnLoadStyle = NewColumnLoadStyle.Hide; this.ultraGrid1.DisplayLayout.ScrollBounds = ScrollBounds.ScrollToFill; this.ultraGrid1.DisplayLayout.ScrollStyle = ScrollStyle.Immediate; this.ultraGrid1.DisplayLayout.ViewStyle = ViewStyle.SingleBand; this.ultraGrid1.DisplayLayout.ViewStyleBand = ViewStyleBand.OutlookGroupBy; // Active Cell Overrides this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.BackColor = System.Drawing.SystemColors.Window; this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.ForeColor = System.Drawing.Color.Empty; // Active Row Overrides this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.BackColor = System.Drawing.Color.Empty; this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.ForeColor = System.Drawing.Color.Empty; // Column Overrides this.ultraGrid1.DisplayLayout.Override.AllowColMoving = AllowColMoving.WithinGroup; this.ultraGrid1.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.True; this.ultraGrid1.DisplayLayout.Override.ColumnSizingArea = ColumnSizingArea.EntireColumn; this.ultraGrid1.DisplayLayout.Override.FixedRowIndicator = FixedRowIndicator.Button; this.ultraGrid1.DisplayLayout.Override.GroupByColumnsHidden = DefaultableBoolean.True; // Cell Appearance Overrides this.ultraGrid1.DisplayLayout.Override.BorderStyleCell = UIElementBorderStyle.Default; this.ultraGrid1.DisplayLayout.Override.CellAppearance.BorderColor = System.Drawing.Color.Empty; this.ultraGrid1.DisplayLayout.Override.CellAppearance.TextHAlign = HAlign.Left; this.ultraGrid1.DisplayLayout.Override.CellAppearance.TextTrimming = TextTrimming.EllipsisCharacter; this.ultraGrid1.DisplayLayout.Override.CellAppearance.TextVAlign = VAlign.Default; this.ultraGrid1.DisplayLayout.Override.CellClickAction = CellClickAction.RowSelect; this.ultraGrid1.DisplayLayout.Override.CellMultiLine = DefaultableBoolean.True; this.ultraGrid1.DisplayLayout.Override.CellPadding = -1; // Card Appearance Overrides this.ultraGrid1.DisplayLayout.Override.CardAreaAppearance.BackColor = System.Drawing.SystemColors.Window; // Row Overrides this.ultraGrid1.DisplayLayout.Override.BorderStyleRow = UIElementBorderStyle.Default; this.ultraGrid1.DisplayLayout.Override.DefaultRowHeight = -1; this.ultraGrid1.DisplayLayout.Override.RowAppearance.BackColor = System.Drawing.SystemColors.Window; this.ultraGrid1.DisplayLayout.Override.RowAppearance.BorderColor = System.Drawing.Color.Empty; this.ultraGrid1.DisplayLayout.Override.RowSizing = RowSizing.AutoFree; this.ultraGrid1.DisplayLayout.Override.RowSizingArea = RowSizingArea.EntireRow; this.ultraGrid1.DisplayLayout.Override.RowSelectors = DefaultableBoolean.True; this.ultraGrid1.DisplayLayout.Override.SelectTypeRow = SelectType.Single; // Header this.ultraGrid1.DisplayLayout.Override.HeaderAppearance.TextHAlign = HAlign.Left; this.ultraGrid1.DisplayLayout.Override.HeaderAppearance.TextVAlign = VAlign.Default; this.ultraGrid1.DisplayLayout.Override.HeaderClickAction = HeaderClickAction.SortMulti; this.ultraGrid1.DisplayLayout.Override.HeaderStyle = HeaderStyle.Default; this.ultraGrid1.DisplayLayout.Override.RowSelectorHeaderStyle = RowSelectorHeaderStyle.ColumnChooserButton; this.ultraGrid1.DisplayLayout.Override.WrapHeaderText = DefaultableBoolean.True; // Group By Row Appearance this.ultraGrid1.DisplayLayout.Override.GroupByRowAppearance.BackColor = System.Drawing.Color.Empty; this.ultraGrid1.DisplayLayout.Override.GroupByRowAppearance.BackColor2 = System.Drawing.Color.Empty; this.ultraGrid1.DisplayLayout.Override.GroupByRowAppearance.BackGradientAlignment = GradientAlignment.Default; this.ultraGrid1.DisplayLayout.Override.GroupByRowAppearance.BackGradientStyle = GradientStyle.Default; this.ultraGrid1.DisplayLayout.Override.GroupByRowAppearance.BorderColor = System.Drawing.Color.Empty; // Special Row Appearance this.ultraGrid1.DisplayLayout.Override.SpecialRowSeparator = SpecialRowSeparator.SummaryRow; this.ultraGrid1.DisplayLayout.Override.SpecialRowSeparatorAppearance.BorderColor = System.Drawing.Color.Empty; this.ultraGrid1.DisplayLayout.Override.SpecialRowSeparatorHeight = -1; // Summary Value Appearance this.ultraGrid1.DisplayLayout.Override.SummaryDisplayArea = (Infragistics.Win.UltraWinGrid.SummaryDisplayAreas)(Infragistics.Win.UltraWinGrid.SummaryDisplayAreas.TopFixed | Infragistics.Win.UltraWinGrid.SummaryDisplayAreas.InGroupByRows); this.ultraGrid1.DisplayLayout.Override.GroupBySummaryDisplayStyle = GroupBySummaryDisplayStyle.SummaryCells; this.ultraGrid1.DisplayLayout.Override.SummaryValueAppearance.BorderColor = System.Drawing.Color.Empty; this.ultraGrid1.DisplayLayout.Override.SummaryValueAppearance.TextVAlign = VAlign.Default; this.ultraGrid1.DisplayLayout.Override.SummaryFooterCaptionVisible = DefaultableBoolean.False; // Set Alternate and Summary Row Color if (Options.CustomizeOptions.OverrideDefaultRowColors) { this.ultraGrid1.DisplayLayout.Override.RowAlternateAppearance.BackColor = Options.CustomizeOptions.AlternateRowColor; this.ultraGrid1.DisplayLayout.Override.SummaryValueAppearance.BackColor = Options.CustomizeOptions.SummaryRowColor; } }
Any ideas how I can create or import a default display layout?
Thanks for the feedback. If you have any further questions, feel free to write us
The layout wizard is what I was looking for. Thanks.
Hello Michael,
There are different approaches to solve this task. One possible solution to export the layout from one grid and import into another grid, could be through Grid`s LayoutWizard. Select a grid, then from context menu, you could run the LayoutWizard. Follow the steps in the wizard to export or import your layout.
Also you could use both methods to save and load the layouts from files. For example:
ultraGrid1.DisplayLayout.SaveAsXml()
ultraGrid1.DisplayLayout.LoadFromXml()
Of course you could use approach with UserControls that contains public property (for example of UltraGrid type). By this way you will have access at design time to modify settings.
The third approach could be with inheritance. You could create a class that inherit our UltraGrid.
Let me know if you have any questions.
Regards