---
title: SAIF.Presentation.Web.Controls.AJAX.Infragistics111 operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.AJAX.Infragistics111
reference_type: package
---

# SAIF.Presentation.Web.Controls.AJAX.Infragistics111 operations and processes

This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog

| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Bind page controls to the model](operations/bind-page-controls-to-the-model.md) | Push the page's `Model` object into every auto-binding control on the page | Page code-behind calls `BindingManager.DataBind()` | Page's `Model` property, `Page.Controls` tree | `RootBindingObject` set on every `iAutoBindingControl` | [BR-AJAX-001](business-rules.md#br-ajax-001-bindable-root-object-is-the-pages-model-property), [BR-AJAX-002](business-rules.md#br-ajax-002-controls-join-automatic-binding-via-iautobindingcontrol-or-their-container) | — | — |
| [Bind a control to its model value](operations/bind-control-to-model-value.md) | Populate a single control's `Value` from the bound model property | ASP.NET data-binding phase, or an explicit `DataBind` call | `RootBindingObject`, `BindSource`, `BindProperty` | Control's `Value` set; validation run | [BR-AJAX-003](business-rules.md#br-ajax-003-no-root-binding-object-means-no-binding), [BR-AJAX-004](business-rules.md#br-ajax-004-bound-target-resolved-by-walking-the-dotted-bindsource-path), [BR-AJAX-006](business-rules.md#br-ajax-006-controls-validate-automatically-after-bind-and-edit-unless-disabled) | — | — |
| [Push a user edit back to the model](operations/push-user-edit-back-to-the-model.md) | Write a user's edited value into the bound model property | Editor `TextChanged` / `ValueChange` postback event | Editor's `Value`, `BoundObject`, `BindProperty` | Model property updated; validation run | [BR-AJAX-004](business-rules.md#br-ajax-004-bound-target-resolved-by-walking-the-dotted-bindsource-path), [BR-AJAX-007](business-rules.md#br-ajax-007-a-user-edit-is-captured-and-pushed-to-the-model-immediately) | — | — |
| [Validate a control and surface errors](operations/validate-control-and-surface-errors.md) | Read validation messages from the bound object and display them | `Validate()` call from bind or edit | `BoundObject` (`IDataErrorInfo`), `BindProperty` | Page's `LblErrorMsg` label text set; control styled | [BR-AJAX-008](business-rules.md#br-ajax-008-validation-messages-come-from-the-bound-objects-idataerrorinfo), [BR-AJAX-011](business-rules.md#br-ajax-011-validation-messages-are-written-to-the-pages-lblerrormsg-label), [BR-AJAX-012](business-rules.md#br-ajax-012-an-invalid-editor-is-highlighted-red-a-valid-one-is-reset) | — | — |
| [Aggregate page validity](operations/aggregate-page-validity.md) | Determine whether the entire page is valid and collect all error messages | Reading `BindingManager.IsValid` / `ErrorMessages` | `Page.Controls` tree | Boolean validity; aggregated error text | [BR-AJAX-010](business-rules.md#br-ajax-010-duplicate-validation-messages-are-shown-only-once), [BR-AJAX-013](business-rules.md#br-ajax-013-the-page-is-valid-only-when-every-auto-binding-control-is-valid) | — | — |
| [Display hover help](operations/display-hover-help.md) | Render a hover-triggered help panel above other page content | Page render, triggered client-side by the toolkit's `HoverMenuExtender` | `ContentText`, `TargetControlID` | Rendered hover panel markup | [BR-AJAX-014](business-rules.md#br-ajax-014-a-hover-panel-renders-above-all-content-and-is-hidden-until-shown), [BR-AJAX-016](business-rules.md#br-ajax-016-hover-controls-render-nothing-when-there-is-no-content) | — | — |
| [Load help text from the database](operations/load-help-text-from-the-database.md) | Retrieve help text (single entry or full list) for an application code | Consumer code calling `clsHelpText.GetHelpText` or `clsHelpTextCollection.GetHelpTexts` | `IDataPortalInfo`, `ApplicationCode`, `ReferenceKeyValue` (single-entry variant) | Populated `clsHelpText` / `clsHelpTextCollection` instance(s) | [BR-AJAX-017](business-rules.md#br-ajax-017-help-text-is-identified-by-an-application-code-and-reference-key-with-length-ceilings), [BR-AJAX-019](business-rules.md#br-ajax-019-a-help-lookup-that-matches-nothing-yields-empty-text-not-an-error) | [APPLICATION_HELP_MASTER](database-tables.md#application_help_master), [APPLICATION_HELP_DETAIL](database-tables.md#application_help_detail) | [SQL-001](sql/SQL-001-help-text-retrieve-by-key.md), [SQL-002](sql/SQL-002-help-text-list-retrieve.md) |
| [Initialize a grid customizer](operations/initialize-a-grid-customizer.md) | Build or retrieve the per-grid column/page-size customization state on first load | `ModalGridCustomizer` non-postback page load | Model's `GridCustomizers` list, `TargetControls.GridId`, designer overrides | `InfragisticsGridCustomizer` instance applied to the grid | [BR-AJAX-021](business-rules.md#br-ajax-021-grid-customization-state-is-created-once-per-grid-per-model-and-reused), [BR-AJAX-024](business-rules.md#br-ajax-024-every-override-column-must-exist-on-the-target-grid) | — | — |
| [Customize grid columns via the modal popup](operations/customize-grid-columns-via-the-modal-popup.md) | Let the user pick visible columns/page size in a modal popup and apply or save them | User clicks the customizer image, then OK / Apply / Save as Default | Checkbox selections, page-size value | Grid rebound with new columns/page size; optionally persisted to `clsPreferences` | [BR-AJAX-037](business-rules.md#br-ajax-037-confirming-the-popup-applies-choices-for-the-session-only), [BR-AJAX-039](business-rules.md#br-ajax-039-only-save-as-default-persists-grid-preferences) | — | — |
| [Apply column and page settings to the grid](operations/apply-column-and-page-settings-to-the-grid.md) | Apply resolved column visibility and page-size state to the live `UltraWebGrid` | Called from grid-customizer initialization and after OK/Apply | `HidableInfragisticsColumn` list, `PageSize`, `ControlPaging` | Grid's `Columns` collection and paging settings updated | [BR-AJAX-040](business-rules.md#br-ajax-040-hiding-a-column-removes-it-entirely-re-showing-reinserts-it-at-its-original-position), [BR-AJAX-041](business-rules.md#br-ajax-041-customizer-controlled-paging-is-always-switched-on) | — | — |

## Process flow diagram
The following diagram visualizes the primary operational flow across operations.

```mermaid
flowchart TD
	Start([Page load / postback]) --> Bind[Bind page controls to the model]
	Bind --> BindOne[Bind a control to its model value]
	BindOne --> Validate[Validate a control and surface errors]
	Edit([User edits a control]) --> Push[Push a user edit back to the model]
	Push --> Validate
	Validate --> Aggregate[Aggregate page validity]
	Hover([User hovers a trigger]) --> Display[Display hover help]
	Display --> LoadHelp[Load help text from the database]
	GridOpen([User opens grid customizer]) --> Init[Initialize a grid customizer]
	Init --> Apply1[Apply column and page settings to the grid]
	GridOpen --> Customize[Customize grid columns via the modal popup]
	Customize --> Apply2[Apply column and page settings to the grid]
	Customize -->|Save as Default| Persist([clsPreferences.Save])
```

## Inherited operations and processes

Operations in this section originate from base classes or services provided by dependency framework libraries. They are inherited or delegated, not implemented in this library.

### From `IBusinessCriteria` (`SAIF.Framework.Core`)

| Operation | Intent | Provided by | Origin | Embedded in |
| --- | --- | --- | --- | --- |
| Create business object from criteria | Uses an `IBusinessCriteria` or `IBusinessApiCriteria` instance with populated `DataPortalInfo`, exposed as `IDataAccess.CreateObject(criteria)`† | `IBusinessCriteria` | `SAIF.Framework.Core` | [Load help text from the database](operations/load-help-text-from-the-database.md) |
| Retrieve business object from criteria | Uses an `IBusinessCriteria` or `IBusinessApiCriteria` instance with populated `DataPortalInfo`, exposed as `IDataAccess.RetrieveObject(criteria)`† | `IBusinessCriteria` | `SAIF.Framework.Core` | [Load help text from the database](operations/load-help-text-from-the-database.md) |

> **Origin**: These operations are defined in `SAIF.Framework.Core` / `IBusinessCriteria` and inherited or delegated by this component. Their step-by-step logic is embedded inline (with `> Origin` callouts) in the consuming operation's detail page.

## Database interactions

The following table summarizes which operations read from or write to the database. Per-step SQL and table citations live in each operation's detail page under `operations/`.

| Operation | SQL | Tables | Type |
| --- | --- | --- | --- |
| [Load help text from the database](operations/load-help-text-from-the-database.md) | [SQL-001](sql/SQL-001-help-text-retrieve-by-key.md), [SQL-002](sql/SQL-002-help-text-list-retrieve.md) | [APPLICATION_HELP_MASTER](database-tables.md#application_help_master), [APPLICATION_HELP_DETAIL](database-tables.md#application_help_detail) | Read |

## Failure and edge-case behavior
- A mistyped `BindSource` / `BindProperty` path fails silently — `BindingUtility` swallows all reflection exceptions, so the control simply remains unbound or unchanged rather than raising an error.*
- A help lookup that matches no row returns a `clsHelpText` with empty-string properties rather than `Nothing` or an exception ([BR-AJAX-019](business-rules.md#br-ajax-019-a-help-lookup-that-matches-nothing-yields-empty-text-not-an-error)).
- An `InfragisticsGridCustomizer` override naming a column that does not exist on the target grid throws `ApplicationException` ([BR-AJAX-024](business-rules.md#br-ajax-024-every-override-column-must-exist-on-the-target-grid)).
- Confirming the modal popup (OK/Apply) only applies choices for the current session; only "Save as Default" persists them ([BR-AJAX-037](business-rules.md#br-ajax-037-confirming-the-popup-applies-choices-for-the-session-only), [BR-AJAX-039](business-rules.md#br-ajax-039-only-save-as-default-persists-grid-preferences)).

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `†` are derived from dependency library documentation via the Legends CLI. Statements marked with `*` were inferred from code structure or contextual evidence. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingManager.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingUtility.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanel.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverHelp.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpText.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpTextCollection.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/ModalGridCustomizer.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb`
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/GridCustomizationPanel.vb`
