---
title: SAIF.Presentation.Web.Controls.Infragistics103 business rules
summary: Enumerated business rules with per-rule trigger, enforcement, and outcomes.
status: draft
owner: SAIF Documentation Team
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.Infragistics103
reference_type: package
---

# SAIF.Presentation.Web.Controls.Infragistics103 business rules

This page captures business rules enforced by this library.

## BR-1: Sentinel null-date suppression on focus

| Field | Value |
| --- | --- |
| **Statement** | Dates equal to `01/01/1901` or `12/31/9999` are treated as "no date" sentinel values and must not be displayed to the user in an editable date field. |
| **Trigger** | Field receives keyboard/mouse focus (`onfocus`). |
| **Enforcement** | `SAIFWebDateTimeEdit_Init` client-script comparison against the literal strings, calling `oEdit.setValue(null)`. |
| **Outcome** | The displayed text is cleared client-side so the user sees a blank field instead of the sentinel date. |
| **Source** | SAIF.Presentation.Web.Controls.Infragistics103\SAIFWebDateTimeEdit.vb |

---

## BR-2: Dangling phone-extension marker stripped

| Field | Value |
| --- | --- |
| **Statement** | A phone number value with a trailing extension marker (`"x"`) but no extension digits after it must be returned without the trailing marker. |
| **Trigger** | `PhoneValue` property is read. |
| **Enforcement** | `SAIFWebMaskEdit.PhoneValue` getter — index/length comparison and `Substring` truncation. |
| **Outcome** | Returned phone string omits the dangling extension marker. |
| **Source** | SAIF.Presentation.Web.Controls.Infragistics103\SAIFWebMaskEdit.vb |

---

## BR-3: Empty masked field returns empty string

| Field | Value |
| --- | --- |
| **Statement** | An empty (untouched) masked-edit field must return an empty string rather than the mask's literal format/placeholder characters, for both phone and tax-ID fields. |
| **Trigger** | `PhoneValue` or `TaxIdValue` property is read. |
| **Enforcement** | Length check on `RawText.Trim` in both getters. |
| **Outcome** | Empty string is returned when no data was entered. |
| **Source** | SAIF.Presentation.Web.Controls.Infragistics103\SAIFWebMaskEdit.vb |

---

## BR-4: Async-refresh error redirects to central error page

| Field | Value |
| --- | --- |
| **Statement** | When an Infragistics AJAX async-refresh operation fails with an error severity greater than 1 (`flags > 1`), the entire page must redirect to the centralized error page (`/weberror/processError.aspx`) with the error message. |
| **Trigger** | Client-side `Error` event of the `WebAsyncRefreshPanel`/`SAIFWarp` control fires during an async postback. |
| **Enforcement** | `SAIFWarp_PreRender` registers the `SAIFWarp_Error` script; inside `SAIFWarp_Error(oPanel, oEvent, flags)`, the `flags > 1` check calls `navigate('/weberror/processError.aspx?MSG={0}')`, where `{0}` is substituted by `GetScriptWithMessage` with the error message (default `"An error occurred in an asynchronous callback."`). |
| **Outcome** | Browser navigates away from the async panel context to the shared error-handling screen. |
| **Source** | SAIF.Presentation.Web.Controls.Infragistics103\SAIFWarp.vb |

---

## BR-5: Cascading dropdown filters Column2 options by Column1 key

| Field | Value |
| --- | --- |
| **Statement** | The second cascading dropdown's (Column2) available options must be restricted, per grid row, to only those `List2` entries whose key matches the currently selected value in the first dropdown (Column1), when the cell enters edit mode. |
| **Trigger** | User begins editing a Column2 cell in the `UltraWebGrid` (`BeforeEnterEditModeHandler` fires). |
| **Enforcement** | Client-side `BeforeEdit{Column2.Key}` function generated by `clsDropDownController.GenerateJavaScript`, invoked via `Column1.Band.Grid.DisplayLayout.ClientSideEvents.BeforeEnterEditModeHandler`. |
| **Outcome** | `col.ValueList` for the cell is replaced with the filtered subset of options. |
| **Source** | SAIF.Presentation.Web.Controls.Infragistics103\clsDropDownController.vb |

## Notes
- No rules were found that are enforced only in database procedures, `AppManager` validation, or `IsValid()`/`AddErrorMessage()` patterns — this library contains no such constructs.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Control catalog](control-catalog.md)
- [Configuration settings](configuration.md)
- [API reference](api/index.md)

## Sources
- SAIF.Presentation.Web.Controls.Infragistics103\SAIFWebDateTimeEdit.vb
- SAIF.Presentation.Web.Controls.Infragistics103\SAIFWebMaskEdit.vb
- SAIF.Presentation.Web.Controls.Infragistics103\SAIFWarp.vb
- SAIF.Presentation.Web.Controls.Infragistics103\clsDropDownController.vb
