Overview

Namespace: TheTechIdea.Beep.Winform.Controls.Design.Server.Designers
Inheritance: BaseBeepControlDesigner

BeepGridProDesigner is the richest single-control designer in the library with 47 smart-tag items organized across 7 named sections. It provides:

  • Quick configuration presets (DataDisplay, DataEntry, SimpleList, SelectionGrid)
  • Design-time sample data generation
  • Column editor dialog integration
  • Row height presets (Standard/Compact/Comfortable)
  • Batch feature toggles (EnableAll/DisableAll)
  • Column auto-sizing commands

Key Features

  • 4 quick-configuration presets that set multiple properties at once
  • GenerateSampleData() creates a 6-row BindingList for design-time preview
  • EditColumns() opens the BeepGridColumnEditorDialog modal
  • 3 row-height presets: Standard (24px), Compact (20px), Comfortable (28px)
  • Column auto-size: BestFitVisibleColumns, BestFitVisibleColumnsAllRows, AutoSizeColumnsNow
  • Inherits CommonBeepControlActionList for style/theme/schema
  • All property changes route through IComponentChangeService

Smart-Tag Sections

SectionItemsDescription
Quick Configuration7 action methodsConfigureAsDataDisplay, ConfigureAsDataEntry, ConfigureAsSimpleList, ConfigureAsSelectionGrid, GenerateSampleData, ClearSamplePreview, EditColumns
Row Height Presets3 action methodsSetStandardRowHeight (24px), SetCompactRowHeight (20px), SetComfortableRowHeight (28px)
Features2 action methodsEnableAllFeatures, DisableInteractiveFeatures
Data Properties2 propertiesDataSource (object), DataMember (string)
Layout Properties6 propertiesRowHeight, ColumnHeaderHeight, ShowColumnHeaders, ShowNavigator, AutoSizeColumnsMode, AutoSizeTriggerMode
Auto-Size3 action methodsBestFitVisibleColumns, BestFitVisibleColumnsAllRows, AutoSizeColumnsNow
Behavior5 propertiesAllowUserToResizeColumns, AllowColumnReorder, MultiSelect, ReadOnly, ShowCheckBox
Appearance5 propertiesGridStyle, GridTitle, NavigationStyle, SortIconVisibility, FilterIconVisibility
Focus Styling3 propertiesUseDedicatedFocusedRowStyle, ShowFocusedCellFill, ShowFocusedCellBorder, FocusedCellBorderWidth
Filtering UI2 propertiesShowTopFilterPanel, TopFilterPanelHeight

Quick Configuration Actions

ConfigureAsDataDisplay()

Sets: ReadOnly=true, ShowColumnHeaders=true, ShowNavigator=true, MultiSelect=true, AllowUserToResizeColumns=true, AllowColumnReorder=true

ConfigureAsDataEntry()

Sets: ReadOnly=false, ShowColumnHeaders=true, ShowNavigator=true, MultiSelect=false, AllowUserToResizeColumns=true

ConfigureAsSimpleList()

Sets: ShowColumnHeaders=false, ShowNavigator=false, AllowUserToResizeColumns=false, AllowColumnReorder=false, MultiSelect=false

ConfigureAsSelectionGrid()

Sets: MultiSelect=true, ShowCheckBox=true, ReadOnly=true

Design-Time Sample Data

The GenerateSampleData() method creates a BindingList<DesignTimeGridPreviewRow> with 6 sample rows. It uses reflection to access the grid's internal Data and Layout helpers, calls Bind() then Recalculate(). The operation is wrapped in a try/catch to prevent designer crashes.

public void GenerateSampleData()
{
    var sampleData = new BindingList<DesignTimeGridPreviewRow>();
    for (int i = 0; i < 6; i++)
        sampleData.Add(new DesignTimeGridPreviewRow
        {
            Id = i + 1,
            Name = $"Item {i + 1}",
            Description = $"Description for item {i + 1}",
            Value = (i + 1) * 100m,
            IsActive = i % 2 == 0,
            CreatedDate = DateTime.Now.AddDays(-i)
        });
    // Use reflection to bind to grid internals
    var dataHelper = grid.GetType()
        .GetField("Data", BindingFlags.NonPublic | BindingFlags.Instance)
        ?.GetValue(grid);
    dataHelper?.GetType()
        .GetMethod("Bind")?.Invoke(dataHelper, new[] { sampleData });
}

Column Editor

The EditColumns() method opens the BeepGridColumnEditorDialog — a modal form that provides full column management:

  • Add/remove/reorder columns
  • Set column type (Text, Numeric, Date, ComboBox, CheckBox, Masked)
  • Configure column width, header text, read-only flag
  • Visual column preview

After the dialog closes, the grid layout is recalculated and the designer surface is invalidated for immediate visual feedback.

Code Example

// At design time, the smart-tag provides all configuration.
// At runtime, bind data programmatically:
var grid = new BeepGridPro();
grid.DataSource = myDataTable;
grid.RowHeight = 28;
grid.AllowUserToResizeColumns = true;
grid.MultiSelect = true;
grid.ShowColumnHeaders = true;
grid.GridStyle = "DataTables";