clsDropDownController¶
clsDropDownController is a generic, business-entity-agnostic binder that wires two dependent dropdown-style value lists onto a pair of UltraGridColumns on an UltraWebGrid, so that the second column's editable options are filtered per row to match the first column's selected value (BR-5). It uses reflection (System.ComponentModel.TypeDescriptor) to read arbitrary properties off List1/List2 data sources by property-name convention, decoupling it from any specific SAIF business-object type, and it generates and registers the client-side JavaScript filter function that Infragistics invokes when a Column2 cell enters edit mode.
Purpose¶
- Bind cascading/dependent value lists to two
UltraGridColumns from arbitraryIEnumerabledata sources, using reflection rather than a compile-time-typed binder. - Generate and register the client-side JavaScript function that restricts a grid cell's available dropdown options based on the value of another cell in the same row (BR-5).
Context¶
- Namespace:
SAIF.Presentation.Web.Controls.V2 - Assembly/package:
SAIF.BOF.Presentation.Web.Infragistics103(source bundled into this package)*
Public members¶
| Member | Signature | Purpose |
|---|---|---|
Column1 |
Public Property Column1 As Infragistics.WebUI.UltraWebGrid.UltraGridColumn |
The grid column whose selected value determines which options are available in Column2. |
Column2 |
Public Property Column2 As Infragistics.WebUI.UltraWebGrid.UltraGridColumn |
The dependent grid column whose value list is filtered based on Column1's selection. |
List1 |
Public Property List1 As IEnumerable |
Data source used to populate Column1's value list and the l1 reflection-derived collection. |
List2 |
Public Property List2 As IEnumerable |
Data source used to populate Column2's value list and the l2 reflection-derived collection. |
List1Code |
Public Property List1Code As String |
Property name read via reflection to obtain each List1 item's code/value (ListItem.id). |
List1Display |
Public Property List1Display As String |
Property name read via reflection to obtain each List1 item's display text (ListItem.desc). |
List2Code |
Public Property List2Code As String |
Property name read via reflection to obtain each List2 item's code/value (ListItem.id). |
List2Display |
Public Property List2Display As String |
Property name read via reflection to obtain each List2 item's display text (ListItem.desc). |
List2Key |
Public Property List2Key As String |
Property name read via reflection to obtain each List2 item's linking key to a List1 item (ListItem.key), the basis of the BR-5 filter match. |
l1 |
Public Field l1 As ArrayList (of ListItem) |
Reflection-derived staging collection of List1 items, populated during DataBind and consumed by GenerateJavaScript. |
l2 |
Public Field l2 As ArrayList (of ListItem) |
Reflection-derived staging collection of List2 items, populated during DataBind and consumed by GenerateJavaScript. |
DataBind |
Public Overrides Sub DataBind() |
Binds Column1/Column2 value lists, projects List1/List2 via reflection into ListItems, and registers the generated filter script; see Cascading dropdown data bind. |
GenerateJavaScript |
Public Function GenerateJavaScript() As String |
Builds the BeforeEdit{Column2.Key} client-side filter function from the l1/l2 collections; see Cascading dropdown JavaScript generation. |
Nested type: ListItem¶
| Member | Signature | Purpose |
|---|---|---|
id |
Public Field id As String |
Staged code/value extracted via reflection from a List1/List2 item, using the List1Code/List2Code property name. |
desc |
Public Field desc As String |
Staged display text extracted via reflection, using the List1Display/List2Display property name. |
key |
Public Field key As String |
Staged linking key (only populated for List2 items) used to match against a List1 item's id when filtering (BR-5). |
Inherited public members¶
Members in this section are inherited from System.Web.UI.Control, the base ASP.NET control class this class extends.
| Member | Signature | Purpose |
|---|---|---|
ID |
Public Overridable Property ID As String |
The control's server-side identifier within its naming container. |
Page |
Public Property Page As Page |
The hosting page instance; used by DataBind to call Page.ClientScript.RegisterClientScriptBlock when registering the generated "DD" filter script. |
Controls |
Public ReadOnly Property Controls As ControlCollection |
The child-control collection of this control (unused directly by clsDropDownController's own logic beyond the base implementation). |
Visible |
Public Overridable Property Visible As Boolean |
Determines whether the control (and any markup it would render) is included in the rendered output. |
DataBind (base) |
Public Overridable Sub DataBind() |
Base data-binding entry point; invoked via MyBase.DataBind() at the start of clsDropDownController.DataBind before the derived binding logic runs. |
FindControl |
Public Function FindControl(id As String) As Control |
Looks up a child control by ID within the naming container. |
NamingContainer |
Public ReadOnly Property NamingContainer As Control |
The nearest ancestor container that implements INamingContainer. |
Behavioral notes¶
- If no
TypeConvertertoStringis found for a reflected property (List1Code/List1Display/List2Code/List2Display/List2Key), the correspondingListItemfield is silently left blank rather than raising an exception. DataBindcallsGenerateJavaScript()twice, discarding the first result; only the second call's output is registered as the"DD"client script block.- Whether this control is actively consumed by any current front-end page in this repository (versus being legacy/unused) was not verified**.
Constraints and usage notes¶
- Requires an
UltraWebGridwithUltraGridColumninstances (Infragistics35.WebUI.UltraWebGrid.v10.3, version10.3.20103.2120). - Depends on a runtime convention (property-name matching) rather than a compile-time contract with the
List1/List2item types.
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.
Sources¶
- SAIF.Presentation.Web.Controls.Infragistics103\clsDropDownController.vb