---
title: SAIF.Presentation.Web.Controls.Infragistics111 operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.Infragistics111
reference_type: package
---

# SAIF.Presentation.Web.Controls.Infragistics111 operations and processes

This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules |
| --- | --- | --- | --- | --- | --- |
| [Cascade grid drop-down value lists](operations/cascade-grid-dropdown-value-lists.md) | Bind a parent and child `UltraWebGrid` column's value lists and register the client script that filters the child list from the parent's selected value. | Consuming page calls `DataBind()` on `clsDropDownController` (directly or via page-level `DataBind`). | `Column1`, `Column2`, `List1`, `List2`, `List1Code`, `List1Display`, `List2Code`, `List2Display`, `List2Key` | Bound `ValueList` on both grid columns; populated `l1`/`l2`; registered client script block `DD` | [BR-CTL-003](business-rules.md#br-ctl-003-cascade-handler-name-derived-from-child-column-key), [BR-CTL-004](business-rules.md#br-ctl-004-explicit-value-and-display-members-required-for-cascaded-columns), [BR-CTL-005](business-rules.md#br-ctl-005-only-string-convertible-properties-populate-generated-lists) |
| [Generate the cascade script](operations/generate-cascade-script.md) | Build the client-side `BeforeEdit<Column2Key>` function that replaces the child column's value list based on the parent cell value. | Called from `DataBind` (as part of the cascade operation); also callable directly by consumers as a public method. | `l1`, `l2`, `Column1.Key`, `Column2.Key` | A `String` containing a complete `<script>` block defining `BeforeEdit<Column2Key>(gridName, cellId)` | [BR-CTL-001](business-rules.md#br-ctl-001-filter-child-drop-down-by-parent-value), [BR-CTL-002](business-rules.md#br-ctl-002-case-insensitive-parent-child-key-match), [BR-CTL-003](business-rules.md#br-ctl-003-cascade-handler-name-derived-from-child-column-key), [BR-CTL-006](business-rules.md#br-ctl-006-generated-script-values-are-not-encoded) |
| [Restore focus and handle errors after an async refresh](operations/restore-focus-and-handle-async-errors.md) | Track the control that should regain focus after a `WebAsyncRefreshPanel` refresh and surface asynchronous callback failures through a shared error page. | ASP.NET control lifecycle events `Init`, `PreRender`, `CreateChildControls`, `RenderContents` on the consuming page. | `ControlsFocus`, `FocusControlID`, `DesignMode` | Hidden field `<ID>_FOCUS`; registered client scripts `WARP_FOCUS_CONTROL`, `WARP_Init`, `SAIFWarp_Error`; assigned `ClientSideEvents` handlers | [BR-CTL-007](business-rules.md#br-ctl-007-client-script-wiring-skipped-in-design-mode), [BR-CTL-008](business-rules.md#br-ctl-008-each-shared-script-block-registered-once-per-page), [BR-CTL-009](business-rules.md#br-ctl-009-focus-target-carried-to-client-in-a-hidden-field), [BR-CTL-010](business-rules.md#br-ctl-010-async-failures-above-severity-threshold-redirect-to-the-error-page), [BR-CTL-011](business-rules.md#br-ctl-011-focus-restoration-failures-do-not-break-the-page) |
| [Suppress sentinel dates on focus](operations/suppress-sentinel-dates-on-focus.md) | Clear a date editor's value when it displays a sentinel min/max date so the user can enter a real date. | Control `Init` event registers the script; the browser `onfocus` event on the rendered input then runs it. | The control's current displayed text | Registered script block `SDTE_Focus`; an `onfocus` attribute on the rendered element | [BR-CTL-012](business-rules.md#br-ctl-012-focusing-a-sentinel-date-clears-the-field), [BR-CTL-013](business-rules.md#br-ctl-013-mindate-and-maxdate-are-treated-as-null-dates) |
| [Normalize masked phone and tax-ID values](operations/normalize-masked-phone-and-tax-id-values.md) | Return a masked phone number or tax ID as a clean data value instead of the mask's literal formatting characters. | Consuming code-behind reads `PhoneValue` or `TaxIdValue`. | Inherited `RawText` and `Text` from `WebMaskEdit` | Normalized `String` | [BR-CTL-014](business-rules.md#br-ctl-014-empty-masked-field-returns-an-empty-string), [BR-CTL-015](business-rules.md#br-ctl-015-phone-value-omits-trailing-extension-marker-when-absent) |

## Process flow diagram
The following diagram visualizes the primary operational flow across operations.

```mermaid
flowchart TD
	Start([Consuming page renders controls]) --> Bind["clsDropDownController.DataBind()"]
	Bind --> Gen["GenerateJavaScript()<br>builds BeforeEdit script"]
	Gen --> Register["Register script blocks<br>via Page.ClientScript"]
	Register --> Focus["Browser: onfocus /<br>RefreshComplete handlers"]
	Focus --> Decision{"Sentinel date<br>or async error?"}
	Decision -->|Sentinel date| ClearDate(["SAIFWebDateTimeEdit clears value"])
	Decision -->|Async error, flags > 1| Redirect(["Browser redirects to /weberror/processError.aspx"])
	Decision -->|Neither| ReadValues["Code-behind reads<br>PhoneValue / TaxIdValue"]
```

## Failure and edge-case behavior
- `clsDropDownController.DataBind`: an unset `Column1` or `Column2` raises a `NullReferenceException` — no guard exists.
- `clsDropDownController.GenerateJavaScript`: an `l2` entry with a `Nothing` `key` raises a `NullReferenceException` on `.ToUpper` — no guard exists.*
- `SAIFWarp`: focus-restoration and error-notification failures in the browser are swallowed by `try`/`catch` blocks so the page continues to function.
- `SAIFWebMaskEdit.PhoneValue`: only `System.Data.StrongTypingException` is caught; other exception types propagate.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

## Sources
- `SAIF.Presentation.Web.Controls.Infragistics111/clsDropDownController.vb`
- `SAIF.Presentation.Web.Controls.Infragistics111/SAIFWarp.vb`
- `SAIF.Presentation.Web.Controls.Infragistics111/SAIFWebDateTimeEdit.vb`
- `SAIF.Presentation.Web.Controls.Infragistics111/SAIFWebMaskEdit.vb`
