Skip to content

ModalGridCustomizer

ModalGridCustomizer is the designer-facing control that gives an UltraWebGrid end-user column/page-size customization. It wires together an internal (assembly-Friend) GridCustomizationPanel popup body, a toolkit ModalPopupExtender, and an InfragisticsGridCustomizer that holds and persists the actual state; the control itself owns the designer-property surface (target grid, column overrides, binding behavior) and the event handlers that react to the popup's OK/Apply/Save-as-Default actions. (BR-AJAX-021)

Purpose

  • Resolves or creates a per-grid InfragisticsGridCustomizer on first load and reuses it across postbacks, so column/page-size state survives round trips for the life of the page's model. (BR-AJAX-021)
  • Wires the internal GridCustomizationPanel popup to a toolkit ModalPopupExtender targeting a caller-supplied trigger image, presenting the column checkbox list and optional page-size editor as a modal dialog.
  • Applies the user's OK/Apply choices to the grid for the session, or persists them as the model's default preferences on Save-as-Default, depending on which button the user clicks. (BR-AJAX-037, BR-AJAX-039)
  • Lets the consumer choose how the grid rebinds after customization — via the object binder, native DataBind, or a fully custom page handler — through the BindingBehaviors setting. (BR-AJAX-038)

Context

  • Namespace: SAIF.Presentation.Web.Controls.V2.AJAX
  • Assembly/package: SAIF.Presentation.Web.Controls.AJAX.Infragistics111 (packaged in SAIF.BOF.Presentation.Web.Infragistics111)
  • Base class: SAIFAJAXControlAncestor
  • Collaborates with the assembly-internal (Friend) GridCustomizationPanel, which renders the popup body and raises AfterRender, OKButtonClicked, BindGrid, and OnSavePreferences back to this control. Because GridCustomizationPanel is not publicly accessible, it is not documented as a separate API page; its behavior is described here and in Customize grid columns via the modal popup.

Public members

Member Signature Purpose
TargetControls.GridId Property TargetControls.GridId As String ID of the UltraWebGrid this instance customizes
TargetControls.ObjectBinderId Property TargetControls.ObjectBinderId As String (default objBinder) ID of the clsObjectBindManager used to rebind the grid when BindingBehavior = ObjectBinder
TargetControls.LinkedRefreshControlID Property TargetControls.LinkedRefreshControlID As String (default "") ID of a WARP refreshed by Apply; empty hides the Apply button (BR-AJAX-036)
ColumnVisiblity.AlwaysVisibleColumns Property ColumnVisiblity.AlwaysVisibleColumns As String (default "") Semicolon-delimited grid column keys the user can never hide (BR-AJAX-028)
ColumnVisiblity.AlwaysHiddenColumns Property ColumnVisiblity.AlwaysHiddenColumns As String (default "") Semicolon-delimited grid column keys the user can never reveal (BR-AJAX-028, BR-AJAX-032)
ControlPaging Property ControlPaging As Boolean (default False) Whether this customizer controls the grid's page size and forces paging on (BR-AJAX-022, BR-AJAX-041)
BindingBehavior Property BindingBehavior As BindingBehaviors (default ObjectBinder) Chosen rebind strategy after customization (BR-AJAX-038)
GridCustomizer ReadOnly Property GridCustomizer As InfragisticsGridCustomizer Resolves (creating if absent) the model's per-grid customizer instance keyed by TargetControls.GridId (BR-AJAX-021)
OnInitialize Event OnInitialize Declared public event that is never raised anywhere in this library's live source*
BindGrid Event BindGrid Raised to rebind the target grid after customization, per BindingBehavior (BR-AJAX-038)

Nested types

Type Kind Purpose
ColumnVisibilityOverride Nested property class Groups AlwaysVisibleColumns and AlwaysHiddenColumns under ColumnVisiblity
TargetControlIDData Nested property class Groups GridId, ObjectBinderId, and LinkedRefreshControlID under TargetControls
BindingBehaviors Enum (ObjectBinder, DataBind, Custom) Selects the rebind strategy applied by CustomizationPanel_BindGrid (BR-AJAX-038)

Inherited public members

Members in this section are inherited from SAIFAJAXControlAncestor in SAIF.Presentation.Web.Controls.AJAX.Infragistics111. They are available on this type through inheritance.

Member Signature Purpose Origin
RootObject ReadOnly Property RootObject As Object The hosting page's Model property value SAIF.Presentation.Web.Controls.AJAX.Infragistics111 — SAIFAJAXControlAncestor
IsFirefox ReadOnly Property IsFirefox As Boolean Browser-capability test for the current request SAIF.Presentation.Web.Controls.AJAX.Infragistics111 — SAIFAJAXControlAncestor

Behavioral notes

  • MGC_-prefixed preference-key constants are declared on this class but never used; the actual persisted preference keys come from InfragisticsGridCustomizer's IGC_ constants. Whether these are leftovers from an earlier design is unknown.**
  • OnInitialize is declared but never raised — consumers cannot currently hook into initialization through this event.*
  • The default icon /Resources/Images/DefaultModalGridCustomizer.gif is used when no image is configured for the trigger, mirroring HoverHelp's default-image pattern. (BR-AJAX-043)

Constraints and usage notes

  • TargetControls.GridId must reference a real UltraWebGrid on the page; a missing target grid or missing object binder throws ApplicationException from the respective reflection property.*
  • The default image path /Resources/Images/DefaultModalGridCustomizer.gif is a hosting-environment contract that consuming applications must publish. (BR-AJAX-043)
  • BindingBehavior = Custom requires the hosting page to handle the BindGrid event itself; otherwise the grid is not rebound after customization. (BR-AJAX-038)

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.Infragistics111/ModalGridCustomizer.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/GridCustomizationPanel.vb