Skip to content

clsUltraGridBinder

This binder is the classic Infragistics v10.3 grid adapter that lets clsObjectBindManager treat an UltraWebGrid as a bindable collection surface, including hierarchical-band lookups and validation feedback mapped back to specific rows and columns. It is the legacy InfragisticsClassicControls grid implementation, distinct from the newer InfragisticsControls data-grid binders in the same library.

Purpose

  • Bind an IEnumerable business-object collection to a classic UltraWebGrid for object-to-control display.
  • Push edited grid cell values back into matching objects by key, including hierarchical child-band rows.
  • Translate IDataErrorInfo validation failures into grid-specific row and cell feedback instead of generic control CSS, aligning with 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
BindSource Property BindSource() As IEnumerable Supplies the collection displayed in the grid and the collection-level validation source checked during error harvesting.
KeyProperty Property KeyProperty() As String Identifies the object property used to match top-level grid rows back to collection items during updates and validation.
HierarchialKeys Property HierarchialKeys() As HierarchialGridArgs Provides per-band key-property mappings used when the grid is configured with hierarchical child bands.
UltraGrid Property UltraGrid() As UltraWebGrid Attaches the classic UltraWebGrid instance and registers it with the base binder infrastructure.
FirstRowWithError Property FirstRowWithError As UltraGridRow Exposes the first row tracked for error focus/navigation scenarios.
FirstColumnWithError Property FirstColumnWithError As String Exposes the first column key tracked for error focus/navigation scenarios.
Init() Overrides Sub Init() Hooks UpdateRowBatch so grid edits can be pushed into the bound objects as rows are updated.
ObjectToControl() Overrides Function ObjectToControl() As Boolean Binds the current collection as the grid's data source and executes DataBind().
GetGridRow(inKey As String) Function GetGridRow(ByVal inKey As String) As UltraGridRow Finds a top-level grid row by the configured key-property value.
GetGridRow(inBand As String, inKey As String) Function GetGridRow(ByVal inBand As String, ByVal inKey As String) As UltraGridRow Finds a hierarchical child row by band key plus that band's configured key-property value.
New() Sub New() Creates an unconfigured grid binder ready for property assignment by manager code.
New(inArgs As UltraGridBindingArgs) Sub New(ByVal inArgs As UltraGridBindingArgs) Seeds the binder from the grid argument bag, including grid, collection, validation source, bind type, and key 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, BR-BIND-002, and BR-BIND-003, 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, 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

  • GetErrors() first resets existing cell formatting, then checks both collection-level IDataErrorInfo.Error text and per-object/per-column IDataErrorInfo.Item(columnName) results.
  • Invalid cells are painted red directly on matching grid cells, and the first invalid cell in a row is activated for immediate user attention.
  • Generic inherited CSS formatting is intentionally not the main error path for this binder because grids are exempt under BR-BIND-002; this binder instead tracks row/column locations and colors cells itself.
  • ControlToObject() walks top-level and child rows, matches each row back to the underlying object by key, and copies editable cell values into browsable, writable properties.

Constraints and usage notes

  • For non-hierarchical grids, KeyProperty must resolve to a unique property value shared by the business object and the grid row key cell.
  • For hierarchical grids, HierarchialKeys must contain a key-property mapping for each child band the binder needs to validate or update.
  • Enum-valued object properties are updated by parsing the grid cell text into the runtime enum type before assignment.
  • The FirstRowWithError and FirstColumnWithError properties exist on the public surface, but the in-method assignments are commented out in the current compiled source, so callers should not assume they are populated automatically.

Sources

  • SAIF.Presentation.Web.Binding.Infragistics103\InfragisticsClassicControls\clsUltraGridBinder.vb
  • SAIF.Presentation.Web.Binding.Infragistics103\clsObjectBinderbase.vb