---
title: Register a binding
summary: Attach a control to a business-object property so the two can move data and be validated together.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Binding.Infragistics111
reference_type: package
operation_id: OP-BIND-001
trigger: Application page setup (typically `Configure` or `Page_Load`)
---

# Register a binding

Attach a control to a business-object property so the two can move data and be validated together.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-BIND-001 |
| **Trigger** | Application page setup (typically `Configure` or `Page_Load`) |
| **Inputs** | A control, a business object (or collection), the target property name, an optional `…BindingArgs`, an optional `UseEvents` flag, an optional `BindTypes` value (default `TwoWay`) |
| **Outputs** | A concrete binder appended to `m_Bindings`; the validation object registered in `m_ValidationObjects` |
| **Primary components** | `clsObjectBindManager.Add` (≈60 overloads), `clsObjectBindManager.AddBinder` |
| **Entry point** | `SAIF.Presentation.Web.Binding.Infragistics111/clsObjectBindManager.vb` |

## Steps

1. Select the binder implementation matching the control's compile-time type — the overload resolution itself performs the dispatch (for example `TextBox` → `clsTextBoxBinder`, `UltraWebGrid` → `clsUltraGridBinder`, `WebDataGrid` → `clsWebDataGridBinder`). ([BR-BIND-001](../business-rules.md#br-bind-001-binder-selected-by-overload-resolution))
2. Populate the binder's `BindSource`, `BindProperty`, `FormControl`, `BindType` and any control-specific settings (target data type, control bind property, padding, checked/unchecked strings, hierarchical band keys). Setting `BindSource` also sets the validation source. ([BR-BIND-002](../business-rules.md#br-bind-002-bindsource-sets-validation-source))
3. Set `UseEvents` on the binder from the caller's flag, defaulting to the manager's `UseEvents`. ([BR-BIND-003](../business-rules.md#br-bind-003-useevents-defaults-to-enabled))
4. Call `AddBinder`, which computes the binder's `ValidationKey` and registers the validation object in `m_ValidationObjects` under that key when the key is non-empty and not already present. ([BR-BIND-004](../business-rules.md#br-bind-004-validation-object-registered-once-by-key)) ([BR-BIND-005](../business-rules.md#br-bind-005-empty-validation-key-skips-registration))
   - Delegates to `clsObjectBinderBase.ValidationKey`, which calls `IsSAIFFrameWorkObject` ([BR-BIND-061](../business-rules.md#br-bind-061-framework-object-detected-by-base-class-name)) and, for framework objects, reads the `MyGuid` property from the business object.*
5. Append the binder to `m_Bindings`.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start([Add call]) --> S1[Resolve binder by control type]
	S1 --> S2[Populate BindSource, BindProperty, FormControl, BindType]
	S2 --> S3[Set UseEvents]
	S3 --> D{Validation key empty?}
	D -->|No| S4[Register in m_ValidationObjects]
	D -->|Yes| S5[Skip source validation registration]
	S4 --> S6[Append binder to m_Bindings]
	S5 --> S6
	S6 --> End([Binding registered])
```

## Failure and edge-case behavior

- A `Nothing` validation object produces an empty key and is not registered for source validation ([BR-BIND-005](../business-rules.md#br-bind-005-empty-validation-key-skips-registration)).

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)

> **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.

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