---
title: ModalGridCustomizer
summary: API reference for ModalGridCustomizer.
status: draft
owner: SAIF documentation generator
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.AJAX.Infragistics103
reference_type: package
---

# ModalGridCustomizer

`ModalGridCustomizer` is the public, page-declarable composite control that lets end users customize an `UltraWebGrid`'s column visibility and paging through a modal popup. It mediates between the target grid, an `InfragisticsGridCustomizer` (in-memory state), a `GridCustomizationPanel` (popup UI), and `clsPreferences` (persisted defaults), implementing [Customize and apply grid column visibility and paging](../../operations/customize-and-apply-grid-column-visibility-and-paging.md).

## Purpose
- Renders a customize-grid icon that opens a `ModalPopupExtender`-hosted `GridCustomizationPanel`, letting users select which columns are visible and (optionally) the grid's page size.
- Resolves and lazily constructs the `InfragisticsGridCustomizer` for its target grid, wiring the popup's OK/Set-as-default actions to apply and optionally persist the resulting configuration.
- Rebinds the target grid after customization according to a configurable `BindingBehavior` (`ObjectBinder`, `DataBind`, or `Custom`).

## Context
- Namespace: `SAIF.Presentation.Web.Controls.V2.AJAX`
- Assembly/package: `SAIF.Presentation.Web.Controls.AJAX.Infragistics103`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| ColumnVisiblity | `Property ColumnVisiblity() As ColumnVisibilityOverride` | Configures the semicolon-delimited always-visible/always-hidden column key lists, enforcing [BR-AJAX-002](../../business-rules.md#br-ajax-002-always-visible-and-always-hidden-grid-columns-cannot-be-toggled-by-the-end-user) |
| TargetControls | `Property TargetControls() As TargetControlIDData` | Configures the target grid's ID, an optional linked refresh control, and the object-binder control ID |
| ControlPaging | `Property ControlPaging() As Boolean` | Specifies whether this customizer manages the target grid's paging settings |
| BindingBehavior | `Property BindingBehavior() As BindingBehaviors` | Selects how the target grid is rebound after customization: `ObjectBinder`, `DataBind`, or `Custom` |
| ControlImage | `ReadOnly Property ControlImage() As Image` | The rendered customize-grid trigger icon |
| OnInitialize | `Event OnInitialize()` | Raised during control initialization for host page hooks* |
| BindGrid | `Event BindGrid()` | Raised when `BindingBehavior = Custom`, letting the hosting page's code-behind rebind the grid itself |
| ColumnVisibilityOverride.AlwaysVisibleColumns | `Property AlwaysVisibleColumns() As String` | Semicolon-delimited list of columns that are always displayed and cannot be hidden by the user |
| ColumnVisibilityOverride.AlwaysHiddenColumns | `Property AlwaysHiddenColumns() As String` | Semicolon-delimited list of columns that are always hidden and never shown to the user |
| TargetControlIDData.GridId | `Property GridId() As String` | The ID of the `UltraWebGrid` this customizer manages |
| TargetControlIDData.LinkedRefreshControlID | `Property LinkedRefreshControlID() As String` | Optional ID of a WARP refreshed when the user applies changes |
| TargetControlIDData.ObjectBinderId | `Property ObjectBinderId() As String` | The page's object-binder control ID, used only when `BindingBehavior = ObjectBinder` |

## Inherited public members

Members in this section are inherited from `SAIFAJAXControlAncestor` and, transitively, `System.Web.UI.WebControls.CompositeControl` in the .NET Framework Base Class Library. They are available on this type through inheritance.

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| RootObject | `Protected ReadOnly Property RootObject() As Object` | Lazily resolves and caches the page's `"Model"` object, used to resolve the model's `GridCustomizers` list | [SAIFAJAXControlAncestor](SAIFAJAXControlAncestor.md) |
| IsFirefox | `Protected ReadOnly Property IsFirefox() As Boolean` | Indicates whether the requesting browser identifies itself as Firefox | [SAIFAJAXControlAncestor](SAIFAJAXControlAncestor.md) |
| ID | `Property ID As String` | The programmatic identifier assigned to this control instance | `System.Web.dll` — `System.Web.UI.Control` |
| Visible | `Property Visible As Boolean` | Controls whether this control renders on the page | `System.Web.dll` — `System.Web.UI.Control` |
| CreateChildControls | `Overridable Sub CreateChildControls()` | Builds this composite control's child control tree, including the trigger icon and popup extender | `System.Web.dll` — `System.Web.UI.WebControls.CompositeControl` |
| RenderContents | `Overridable Sub RenderContents(writer As HtmlTextWriter)` | Renders this composite control's markup to the response stream | `System.Web.dll` — `System.Web.UI.WebControls.CompositeControl` |

## Behavioral notes
- `TargetGrid` and `ObjectBinder` property getters throw `ApplicationException` if the named grid/binder control cannot be resolved via `Page.FindControl`.
- The `GridCustomizer` getter lazily either finds an existing customizer for the target grid in the model's `GridCustomizers` list, or constructs and registers a new one, per [Customize and apply grid column visibility and paging](../../operations/customize-and-apply-grid-column-visibility-and-paging.md).

## Constraints and usage notes
- Requires `TargetControls.GridId` to reference an actual `UltraWebGrid` control on the same page.
- When `BindingBehavior = ObjectBinder` (the default), requires a `clsObjectBindManager` control named per `TargetControls.ObjectBinderId` (default `"objBinder"`) to be present on the page.

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics103\ModalGridCustomizer.vb`
