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
CheckBoxListfrom 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.
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 |
| --- | --- | --- |
| 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(). |
| 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(). |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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, BR-BIND-002, and BR-BIND-003, giving the reader a visual cue of validation state. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| ValidationKey | Friend Overridable ReadOnly Property ValidationKey As String |
Computed by AddBinder() to key the bound object into m_ValidationObjects per BR-BIND-006, ensuring repeated Validate() passes re-check the correct distinct object. |
| 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. |
| ## 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. |
||
- GetErrors() collects collection-level IDataErrorInfo.Error text first, then per-item IDataErrorInfo.Item(BindProperty) messages for matching keys. |
Constraints and usage notes¶
BindSourcemust expose item properties named byKeyProperty,TextProperty,BindProperty, andEnabledProperty.- Item matching is case-insensitive and depends on
KeyPropertyvalues 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.vbSAIF.Presentation.Web.Binding.Infragistics103\clsObjectBinderbase.vb