clsDropDownController¶
clsDropDownController is a non-rendering System.Web.UI.Control subclass that cascades two UltraWebGrid columns' drop-down value lists: it binds a parent column and a child column to consumer-supplied data sources, and generates the client-side JavaScript that filters the child column's options to only those associated with the parent column's currently selected value. It is declared on a page alongside the grid it targets and is driven entirely by the standard DataBind lifecycle call; it has no rendering output of its own and no other type in this library calls it.
Purpose¶
- Bind a parent (
Column1) and child (Column2)UltraWebGridcolumn's value lists from consumer-suppliedIEnumerablesources (BR-CTL-004). - Project both data sources into flattened
ListItemlookup lists, skipping members that cannot be converted toString(BR-CTL-005). - Generate and register a uniquely named client-side handler that filters the child column's value list to the options matching the parent column's selected value (BR-CTL-001, BR-CTL-002, BR-CTL-003).
Context¶
- Namespace:
SAIF.Presentation.Web.Controls.V2 - Assembly/package:
SAIF.Presentation.Web.Controls.Infragistics111(packaged as source intoSAIF.BOF.Presentation.Web.Infragistics111) - Base class:
System.Web.UI.Control(.NET Base Class Library; not a vendor or SAIF framework type)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
Column1 |
Public Property Column1() As Infragistics.WebUI.UltraWebGrid.UltraGridColumn |
The parent (filtering) grid column whose selected value drives which options appear in Column2. |
Column2 |
Public Property Column2() As Infragistics.WebUI.UltraWebGrid.UltraGridColumn |
The child (filtered) grid column whose value list is rebuilt from the parent column's selection. |
List1 |
Public Property List1() As IEnumerable |
The data source bound to Column1's value list. |
List2 |
Public Property List2() As IEnumerable |
The data source bound to Column2's value list. |
List1Code |
Public Property List1Code() As String |
Name of the property on List1 items supplying the value member for Column1's value list. |
List2Code |
Public Property List2Code() As String |
Name of the property on List2 items supplying the value member for Column2's value list. |
List1Display |
Public Property List1Display() As String |
Name of the property on List1 items supplying the display member for Column1's value list. |
List2Display |
Public Property List2Display() As String |
Name of the property on List2 items supplying the display member for Column2's value list. |
List2Key |
Public Property List2Key() As String |
Name of the property on List2 items holding the parent code used to group child options under their parent (BR-CTL-002). |
l1 |
Public l1 As New ArrayList |
The flattened ListItem projection of List1, built by DataBind and read by GenerateJavaScript to emit the parent switch cases. |
l2 |
Public l2 As New ArrayList |
The flattened ListItem projection of List2, built by DataBind and read by GenerateJavaScript to emit each parent case's filtered child options. |
DataBind |
Public Overrides Sub DataBind() |
Binds both grid columns' value lists, projects both sources into l1/l2, wires the grid's BeforeEnterEditModeHandler, and registers the generated cascade script; see Cascade grid drop-down value lists. |
GenerateJavaScript |
Public Function GenerateJavaScript() As String |
Builds and returns the BeforeEdit<Column2Key> client function that replaces the child column's value list based on the parent cell value; see Generate the cascade script. |
Behavioral notes¶
DataBindcallsGenerateJavaScript()twice — once discarding the result, then again to register the returned script — which is redundant work with no observable side effect from the discarded call.*- Generated script values (item codes and descriptions) are concatenated into JavaScript string literals without HTML/JS encoding, which is a script-injection risk if list values are influenced by user input (BR-CTL-006).**
DataBindhas no null guard onColumn1/Column2; an unset column raises an unhandledNullReferenceException.
Constraints and usage notes¶
Option StrictisOffin this project, andDataBind's reflection-based projection relies on late-boundTypeConverterconversion; only properties whoseTypeConvertercan targetSystem.Stringcontribute tol1/l2(BR-CTL-005).- Behavior depends on the Infragistics 11.1
UltraWebGridclient-side API (igtbl_getColumnById,igtbl_getRowById,getCellFromKey) and is version-locked toInfragistics35.WebUI.UltraWebGrid.v11.1.*
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.Infragistics111/clsDropDownController.vb