clsDDLBinder¶
This binder synchronizes a WebForms DropDownList selection with a business-object property and performs the type conversion needed to turn selected item values into dates, numbers, booleans, enums, or strings. It uses the base binder's reflection helpers for object access while letting the page keep standard list population and selection behavior.
Purpose¶
- Push a bound property value into a
DropDownListby selecting the matching item value. - Convert the selected list value back into the target property type during control-to-object updates.
- Reuse the shared validation and control-formatting pipeline for single-value list selection, including BR-BIND-001.
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 |
|---|---|---|
| BindProperty | Property BindProperty As String |
Names the business-object property that receives or provides the selected list value. |
| BindSource | Property BindSource As Object |
Holds the business object whose property is synchronized with the list selection. |
| DropDownList | Property DropDownList As DropDownList |
Attaches the concrete list control and registers it with the base binder pipeline. |
| TargetType | Property TargetType As ObjectDataType |
Selects the conversion path used when reading from or writing to the selected item value. |
| Init() | Overrides Sub Init() |
Hooks SelectedIndexChanged when event-driven write-back is enabled for the current bind direction. |
| ObjectToControl() | Overrides Function ObjectToControl() As Boolean |
Finds the list item whose value matches the bound property and makes it the active selection. |
| ## 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() uses Items.FindByValue(value) and clears any previous selection before selecting the matching item. |
||
- ControlToObject() converts SelectedItem.Value according to TargetType, including Enum.Parse(enumType, value) for enum-backed properties. |
||
- Inherited control formatting applies the base CSS behavior, including BR-BIND-001, because this binder does not override SetControlFormat(). |
Constraints and usage notes¶
- The control must already contain items whose
Valueentries match the bound property values. TargetTypemust align with both the selected value text and the destination property type to avoid conversion failures.- Enum write-back uses the runtime type of the current property value, so the bound property must already be initialized to the correct enum type.
Sources¶
SAIF.Presentation.Web.Binding.Infragistics103\ASPControls\clsDDLBinder.vbSAIF.Presentation.Web.Binding.Infragistics103\clsObjectBinderbase.vb