---
title: clsCheckBoxListBinder
summary: API reference for clsCheckBoxListBinder.
status: draft
owner: SAIF documentation team
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Binding.Infragistics103
reference_type: embedded
---

# clsCheckBoxListBinder

This binder projects an `IEnumerable` collection into a `CheckBoxList`, using separate item properties for key, text, selected state, and enabled state, then pushes per-item selections back into the source objects. It also harvests collection-level and item-level `IDataErrorInfo` messages through the shared binder infrastructure while relying on the library's list-control formatting exception for visual styling.

## Purpose
- Populate a `CheckBoxList` from a collection of business objects by mapping text and value fields.
- Persist each item's selected and enabled state back to matching source objects.
- Surface validation messages for both the collection and individual items while honoring [BR-BIND-002](../../business-rules.md#br-bind-002-gridlist-controls-exempt-from-cell-level-errorvalid-css).

## Context
- Namespace: `SAIF.Presentation.Web.Binding`
- Assembly/package: `SAIF.Presentation.Web.Binding.Infragistics103` (embedded/bundled as source, not independently packaged)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| EnabledProperty | `Property EnabledProperty As String` | Names the source property that controls whether each rendered list item is enabled. |
| TextProperty | `Property TextProperty As String` | Names the source property displayed as each list item's caption. |
| KeyProperty | `Property KeyProperty As String` | Names the source property used as each list item's value and match key. |
| BindProperty | `Property BindProperty As String` | Names the source property that stores each item's selected state. |
| BindSource | `Property BindSource As IEnumerable` | Holds the item collection used for list population, validation, and write-back. |
| CheckBoxList | `Property CheckBoxList As CheckBoxList` | Attaches the concrete checklist control and registers it with the base binder pipeline. |
| Init() | `Overrides Sub Init()` | Hooks `SelectedIndexChanged` when event-driven write-back is enabled for the current bind direction. |
| ObjectToControl() | `Overrides Function ObjectToControl() As Boolean` | Binds the collection into the checklist and applies selected/enabled state for each item from source-object properties. |
| New() | `Sub New()` | Creates a binder preconfigured to use the default value-oriented control bind property. |
## Inherited public members
| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| ContainsError | `ReadOnly Property ContainsError As Boolean` | Set by GetErrors()/validation processing; when true, Validate()/RefreshValidation() counts this binder toward the overall invalid result and its control receives error-state CSS via SetControlFormat(). | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| IsDualBinding | `ReadOnly Property IsDualBinding As Boolean` | When true, ObjectToControl()/ControlToObject() read and write the display object/property while GetErrors() checks a separate validation object/property, as configured by AddDualBinder(). | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| ControlPadding | `Property ControlPadding As PadArgs` | When UsePadding is enabled, pads or trims the value written to the control during ObjectToControl(), so fixed-width display formatting is applied without changing the underlying object value. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| ObjectPadding | `Property ObjectPadding As PadArgs` | When UsePadding is enabled, pads or strips padding from the value written back to the bound property during ControlToObject(), so stored data is not polluted with display-only padding characters. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| UsePadding | `Property UsePadding As Boolean` | Enables the ControlPadding/ObjectPadding transforms during ObjectToControl()/ControlToObject(); when false, values pass through unpadded regardless of the padding arguments configured. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| UseEvents | `Property UseEvents As Boolean` | When true, Init() wires the control's native change event so a user edit immediately calls ControlToObject() instead of waiting for an explicit BindToObject()/Validate() call. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| ControlErrors | `ReadOnly Property ControlErrors As ArrayList` | Holds the error text GetErrors() collects from the bound object's IDataErrorInfo implementation; Validate() aggregates these strings into the consolidated ErrorLabel/SAIFMessage output. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| BindType | `Property BindType As BindTypes` | Determines which of ObjectToControl()/ControlToObject() actually run during DataBind()/BindToObject(), controlling whether this binder is push-only, pull-only, both, or validation-only. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| FormControl | `Overridable Property FormControl As WebControl` | Setting this property runs ProcessControl, which applies binder-specific control setup (event wiring readiness, CSS baseline) before the control participates in binding and validation passes. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| FormControlID | `Overridable ReadOnly Property FormControlID As String` | Supplied to Update() and error-focus logic to locate this binder's control instance on the page without holding a direct control reference. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| Init() | `MustOverride Sub Init()` | Called once during AddBinder() registration; each concrete binder overrides this to hook the native control event needed for event-driven ControlToObject() and to perform any control-specific setup. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| ObjectToControl() | `MustOverride Function ObjectToControl() As Boolean` | Invoked by DataBind() for binders configured as ObjectToControl/TwoWay; each concrete binder overrides this to translate the bound property's value into the control-specific display state. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| ControlToObject() | `Protected Friend MustOverride Sub ControlToObject()` | Invoked by BindToObject() for binders configured as ControlToObject/TwoWay; each concrete binder overrides this to convert the control's current value back into the bound property's type. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| SetControlFormat(inValid As Boolean) | `Protected Friend Overridable Sub SetControlFormat(inValid As Boolean)` | Called by Validate()/RefreshValidation() after error collection; sets the control's CssClass to the valid/error color per [BR-BIND-001](../../business-rules.md#br-bind-001-error-css-suppression-for-protected-fields), [BR-BIND-002](../../business-rules.md#br-bind-002-gridlist-controls-exempt-from-cell-level-errorvalid-css), and [BR-BIND-003](../../business-rules.md#br-bind-003-multi-line-textbox-error-styling-differs-from-single-line), giving the reader a visual cue of validation state. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| GetErrors() | `Protected Friend Overridable Sub GetErrors()` | Reads the bound object's IDataErrorInfo.Item(property) during Validate()/RefreshValidation() and appends any non-empty message to ControlErrors, driving both ContainsError and the consolidated error display. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| GetObjectValueAsString(inBizObject, inPropertyName) | `Function GetObjectValueAsString(inBizObject As Object, inPropertyName As String) As String` | Used by ObjectToControl() to fetch the bound property's current value as display-ready text, applying ObjectPadding/ControlPadding first when UsePadding is enabled. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| GetObjectValue(inBizObject, inPropertyName) | `Function GetObjectValue(inBizObject As Object, inPropertyName As String) As Object` | Used by ObjectToControl() and type-sensitive binders to fetch the bound property's value in its native CLR type, before any control-specific conversion or formatting. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| SetObjectValueAsString(inBizObject, inPropertyName, inValue) | `Protected Function SetObjectValueAsString(inBizObject As Object, inPropertyName As String, inValue As String) As Boolean` | Used by ControlToObject() to write a control-derived string back onto the bound property, applying padding/trim rules first when UsePadding is enabled, so the object receives a correctly formatted value. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| SetObjectValue(inBizObject, inPropertyName, inValue) | `Protected Function SetObjectValue(inBizObject As Object, inPropertyName As String, inValue As Object) As Boolean` | Used by ControlToObject() to write a converted, strongly typed value back onto the bound property, bypassing string formatting for binders that perform their own type conversion. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| ValidationKey | `Friend Overridable ReadOnly Property ValidationKey As String` | Computed by AddBinder() to key the bound object into m_ValidationObjects per [BR-BIND-006](../../business-rules.md#br-bind-006-validation-key-derivation-for-saif-framework-objects), ensuring repeated Validate() passes re-check the correct distinct object. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| IsSAIFFrameWorkObject | `Friend Overridable ReadOnly Property IsSAIFFrameWorkObject(Optional inObj As Object) As Boolean` | Detects SAIF framework objects by walking the CLR base-type chain for `clsBusinessBase`/`clsBusinessCollectionBase`. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
## Behavioral notes
- `ObjectToControl()` sets `DataTextField`, `DataValueField`, and `DataSource`, calls `DataBind()`, then performs a second pass to mark individual items selected and enabled.
- `ControlToObject()` matches list items back to source objects by `KeyProperty` and writes both the selected state and enabled state.
- Base `SetControlFormat()` skips generic CSS changes for `CheckBoxList` controls under [BR-BIND-002](../../business-rules.md#br-bind-002-gridlist-controls-exempt-from-cell-level-errorvalid-css).
- `GetErrors()` collects collection-level `IDataErrorInfo.Error` text first, then per-item `IDataErrorInfo.Item(BindProperty)` messages for matching keys.

## Constraints and usage notes
- `BindSource` must expose item properties named by `KeyProperty`, `TextProperty`, `BindProperty`, and `EnabledProperty`.
- Item matching is case-insensitive and depends on `KeyProperty` values being unique within the collection.
- Generic binder formatting does not visually mark individual checklist items; this binder only records error text in `ControlErrors`.

## Sources
- `SAIF.Presentation.Web.Binding.Infragistics103\ASPControls\clsCheckBoxListBinder.vb`
- `SAIF.Presentation.Web.Binding.Infragistics103\clsObjectBinderbase.vb`
