BeepGridProDesigner
The design-time designer for BeepGridPro — 47 smart-tag properties, quick configuration presets, column editor, sample data generation
Table of Contents
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
| Section | Items | Description |
|---|---|---|
| Quick Configuration | 7 action methods | ConfigureAsDataDisplay, ConfigureAsDataEntry, ConfigureAsSimpleList, ConfigureAsSelectionGrid, GenerateSampleData, ClearSamplePreview, EditColumns |
| Row Height Presets | 3 action methods | SetStandardRowHeight (24px), SetCompactRowHeight (20px), SetComfortableRowHeight (28px) |
| Features | 2 action methods | EnableAllFeatures, DisableInteractiveFeatures |
| Data Properties | 2 properties | DataSource (object), DataMember (string) |
| Layout Properties | 6 properties | RowHeight, ColumnHeaderHeight, ShowColumnHeaders, ShowNavigator, AutoSizeColumnsMode, AutoSizeTriggerMode |
| Auto-Size | 3 action methods | BestFitVisibleColumns, BestFitVisibleColumnsAllRows, AutoSizeColumnsNow |
| Behavior | 5 properties | AllowUserToResizeColumns, AllowColumnReorder, MultiSelect, ReadOnly, ShowCheckBox |
| Appearance | 5 properties | GridStyle, GridTitle, NavigationStyle, SortIconVisibility, FilterIconVisibility |
| Focus Styling | 3 properties | UseDedicatedFocusedRowStyle, ShowFocusedCellFill, ShowFocusedCellBorder, FocusedCellBorderWidth |
| Filtering UI | 2 properties | ShowTopFilterPanel, 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";