---
title: clsObjectBindManager
summary: API reference for clsObjectBindManager.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Binding.Infragistics111
reference_type: package
---

# clsObjectBindManager

`clsObjectBindManager` is the page-level binding container an application drops onto an ASP.NET WebForms page as a `System.Web.UI.Control`. It is this library's only public entry point: it owns the registered-binder collection (`m_Bindings`), the per-object validation registry (`m_ValidationObjects`), the aggregated error list, and the page-lifecycle hooks that drive registration, initialization, data movement, and validation across every bound control on the page.

## Purpose
- Register bindings via ~60 `Add` overloads (one family per supported control type) and three `AddCustomValidator` overloads, dispatching to the matching concrete binder by the control's compile-time type ([BR-BIND-001](../../business-rules.md#br-bind-001-binder-selected-by-overload-resolution)).
- Drive the page lifecycle: initialize binders and their change-event subscriptions on `OnLoad`, and optionally auto-bind on `OnPreRender` (see [Register a binding](../../operations/register-a-binding.md), [Initialize binders (page load)](../../operations/initialize-binders-page-load.md)).
- Push and pull data between business objects and controls (`DataBind`, `BindToObject`) and run full validation with error aggregation and control re-styling (`Validate`, `RefreshValidation`).
- Re-point an existing grid or drop-down binder at a new collection after a postback (`Update`), and look up the binder registered for a specific control (`Binder`).

## Context
- Namespace: `SAIF.Presentation.Web.Binding`
- Assembly/package: `SAIF.Presentation.Web.Binding.Infragistics111` (ILMerged into `SAIF.Presentation.Web.Infragistics111.dll`)
- Base class: `System.Web.UI.Control`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| FormattedErrorMessage | `Public ReadOnly Property FormattedErrorMessage() As String` | All distinct error messages joined with `<BR>` ([BR-BIND-041](../../business-rules.md#br-bind-041-distinct-messages-joined-with-br)). |
| ErrorLabel | `Public Property ErrorLabel() As Label` | Optional label that receives the formatted error text ([BR-BIND-042](../../business-rules.md#br-bind-042-formatted-message-written-to-configured-controls)). |
| SAIFMessage | `Public Property SAIFMessage() As SAIFMessage` | Optional SAIF message control that receives the formatted error text ([BR-BIND-042](../../business-rules.md#br-bind-042-formatted-message-written-to-configured-controls)). |
| AutoBind | `Public Property AutoBind() As Boolean` | When `True`, `DataBind()` runs automatically on `PreRender`; persisted in `ViewState` ([BR-BIND-006](../../business-rules.md#br-bind-006-autobind-persists-via-viewstate), [BR-BIND-018](../../business-rules.md#br-bind-018-autobind-triggers-on-prerender)). |
| FirstControlWithError | `Public ReadOnly Property FirstControlWithError() As WebControl` | The first control found with a validation error, so the page can focus it ([BR-BIND-035](../../business-rules.md#br-bind-035-first-error-control-recorded)). |
| FirstRowWithError | `Public Property FirstRowWithError() As <grid row type>` | Intended to hold the first grid row found with a validation error; the assignment is commented out in source, so this always returns `Nothing`.* |
| FirstColumnWithError | `Public Property FirstColumnWithError() As <grid column type>` | Intended to hold the first grid column found with a validation error; the assignment is commented out in source, so this always returns `Nothing`.* |
| ValidBackColor | `Public Property ValidBackColor() As Color` | Background color applied to a control on successful validation; defaults to `White`. |
| ErrorBackColor | `Public Property ErrorBackColor() As Color` | Background color applied to a control on validation failure; defaults to `Red`. |
| UseEvents | `Public Property UseEvents() As Boolean` | Manager-level default for whether new binders hook control change events; defaults to `True` ([BR-BIND-003](../../business-rules.md#br-bind-003-useevents-defaults-to-enabled)). |
| Add | `Public Function Add(...) As <Binder> (~60 overloads)` | Registers a control/business-object binding, dispatching to the matching concrete binder by the control's compile-time type ([BR-BIND-001](../../business-rules.md#br-bind-001-binder-selected-by-overload-resolution), see [Register a binding](../../operations/register-a-binding.md)). |
| AddDualBinder | `Public Function AddDualBinder(...) As clsObjectBinderBase` | Registers a binder that displays one object while validating another, for the six `CustomBindingControls` types ([BR-BIND-058](../../business-rules.md#br-bind-058-dual-binding-limited-to-six-control-types), see [Dual binding](../../operations/dual-binding.md)). |
| AddCustomValidator | `Public Function AddCustomValidator(...) As clsCustomValidator (3 overloads)` | Registers an application-supplied validation delegate that participates in the same error pipeline as property-level bindings. |
| DataBind | `Public Overrides Sub DataBind()` | Pushes object values into all `ObjectToControl`/`TwoWay` binders ([BR-BIND-010](../../business-rules.md#br-bind-010-databind-and-bindtoobject-respect-bind-type), see [Push object values into controls](../../operations/push-object-values-into-controls.md)). |
| BindToObject | `Public Sub BindToObject(Optional inAllControls As Boolean = False)` | Pulls control values back onto business objects, honoring `UseEvents` unless `inAllControls` is `True` ([BR-BIND-019](../../business-rules.md#br-bind-019-bindtoobject-respects-inallcontrols-flag), see [Pull control values back into objects](../../operations/pull-control-values-into-objects.md)). |
| Validate | `Public Function Validate() As Boolean` | Runs the full validation pass, including bind-source `IsValid` evaluation, and returns overall validity ([BR-BIND-029](../../business-rules.md#br-bind-029-reading-isvalid-triggers-rule-evaluation), see [Validate bound objects and report errors](../../operations/validate-bound-objects-and-report-errors.md)). |
| RefreshValidation | `Public Function RefreshValidation() As Boolean` | Re-renders existing error state without re-running bind-source `IsValid` evaluation ([BR-BIND-043](../../business-rules.md#br-bind-043-refreshvalidation-skips-bind-source-revalidation)). |
| Update | `Public Overridable Sub Update(control, dataSource) (3 overloads: UltraWebGrid, WebDataGrid, DropDownList)` | Re-points a grid or drop-down binder at a new data source and rebinds it ([BR-BIND-055](../../business-rules.md#br-bind-055-update-matches-binder-by-class-name), [BR-BIND-057](../../business-rules.md#br-bind-057-re-pointed-binder-is-re-added-and-rebinds), see [Re-point a binder at a new data source](../../operations/repoint-a-binder-at-a-new-data-source.md)). |
| Binder | `Public ReadOnly Property Binder(control As Control) As clsObjectBinderBase` | Looks up a registered binder by the control's `UniqueID` ([BR-BIND-060](../../business-rules.md#br-bind-060-binder-lookup-by-exact-uniqueid), see [Look up a binder by control](../../operations/look-up-a-binder-by-control.md)). |
| ObjectToControl | `Public Sub ObjectToControl(control As Control)` | `Binder(control).ObjectToControl()` directly; an unmatched control raises a `NullReferenceException`.* |

## Behavioral notes
- `IsSAIFFrameWorkObject` is duplicated as a private method on this class in addition to the `Friend` property on `clsObjectBinderBase` ([BR-BIND-061](../../business-rules.md#br-bind-061-framework-object-detected-by-base-class-name)).*
- `Validate()` and `RefreshValidation()` share roughly 50 lines of duplicated logic; the only difference is that `RefreshValidation` omits the bind-source `IsValid` read.*

## Constraints and usage notes
- The only public entry point applications interact with; individual binders are reached only through `Add`/`AddDualBinder`/`AddCustomValidator` or the `Binder(control)` lookup.

> **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. Statements marked with † were retrieved from dependency library documentation via the Legends CLI RAG service. They describe inherited behavior from the indicated origin library and should be verified if the dependency version changes.

## Sources
- SAIF.Presentation.Web.Binding.Infragistics111/clsObjectBindManager.vb
