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

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

This library exposes UI-rendering operations rather than business transactions. This page is the operation catalog and cross-operation hub; each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules |
| --- | --- | --- | --- | --- | --- |
| [Banner rendering and logout](operations/banner-rendering-and-logout.md) | Render site banner chrome and handle logout | Render pipeline (`OnInit`/`Render`); logout `LinkButton` postback | `AppGlobal.EnvironmentService.IsClientExternal`, virtual directory name, `SITEBANNER(V2).XML` | Banner HTML; logout redirect | [BR-V2-001](business-rules.md#br-v2-001-internal-clients-suppress-default-bannerlogoutfeedback-visibility), [BR-V2-002](business-rules.md#br-v2-002-login-app-suppresses-logoutfeedback-popout-behavior) |
| [Collapsible panel state toggle](operations/collapsible-panel-state-toggle.md) | Persist and render panel expand/collapse state | Postback with hidden `StateControl` field | `Request(UniqueID & "$StateControl")` | Rendered header/content tree with correct `display` style | — |
| [Tab selection](operations/tab-selection.md) | Manage tab-bar selection state and raise tab-change events | Tab `LinkButton` click (postback) | Tab collection (`SAIFTabBarTabCollection` or `ArrayList` of `TabSettings`) | Updated selection state; `TabClicked`/`SelectedIndexChanged` events | [BR-V2-006](business-rules.md#br-v2-006-saiftabbar-tab-selection-is-mutually-exclusive-in-tabbar-mode) |
| [Message icon selection](operations/message-icon-selection.md) | Auto-select status icon from message text | `Text` property set, evaluated at render | `Text` content | `DisplayImage` selection; stripped `"Complete:"` text | [BR-V2-005](business-rules.md#br-v2-005-message-icon-is-derived-from-message-text-keywords-unless-explicitly-overridden) |
| [MultiList selection and wildcard behavior](operations/multilist-selection-and-wildcard-behavior.md) | Synchronize checkbox-list selection with a semicolon-delimited text box, enforcing wildcard exclusivity | `CheckBoxList.SelectedIndexChanged` or `TextBox.TextChanged` postback | Selected checkbox items; typed text | Updated text box value; updated item selection/enabled state | [BR-V2-004](business-rules.md#br-v2-004-wildcard-selection-in-multilistcontrol-is-mutually-exclusive-with-other-items) |

## Process flow diagram
The following diagram visualizes the primary operational flow across this library's control-rendering operations.

```mermaid
flowchart TD
	Start([Page render pipeline]) --> Init[Control OnInit / Init]
	Init --> Create[CreateChildControls / DataBind]
	Create --> Render[Render / RenderControl]
	Render --> Postback{Postback event?}
	Postback -->|Banner logout| Logout[Session.Abandon, clear cookies, redirect]
	Postback -->|Tab click| TabSel[Update tab selection state, raise event]
	Postback -->|Panel toggle| PanelSel[Update PanelState from hidden field]
	Postback -->|MultiList change| MultiSel[Sync checkbox list / text box]
	Postback -->|None| Done([Rendered HTML output])
```

## Database interactions

None. This library contains no database access of any kind (see analysis findings — "Database interaction summary: None").

## Failure and edge-case behavior
- `BannerControl`/`BannerControlV2` `Render`: if `Context Is Nothing` (design-time), a static placeholder banner is written; if the resolved resource path is empty, no banner is rendered at all — a silent no-op fallback, not an error.
- `SAIFPanel`: no server-side validation of the posted `StateControl` value beyond a string comparison to `"Collapsed"`; any other value defaults to expanded.
- `SAIFTabs.LinkButtonClick`: the `BeforeSelectedIndexChanged` event is cancelable via `SAIFTabEventArgs.Cancel`, allowing the host page to veto a tab switch before `SelectedIndexChanged` fires.
- `MultiListControl.LayoutControls` branches CSS/positioning logic on `Page.Request.Browser.Browser.ToUpper = "FIREFOX"`, a legacy browser-sniffing pattern that may not correctly detect modern Firefox user agents*.

> **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.

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

## Sources
- SAIF.Presentation.Web.Controls.V2\Banner.vb
- SAIF.Presentation.Web.Controls.V2\BannerControlV2.vb
- SAIF.Presentation.Web.Controls.V2\SAIFPanel.vb
- SAIF.Presentation.Web.Controls.V2\SAIFTabBar.vb
- SAIF.Presentation.Web.Controls.V2\SAIFTabs.vb
- SAIF.Presentation.Web.Controls.V2\SAIFMessage.vb
- SAIF.Presentation.Web.Controls.V2\MultiListControl.vb
