---
title: SAIFTabBar
summary: API reference for SAIFTabBar.
status: draft
owner: SAIF Documentation Team
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.V2
reference_type: package
---

# SAIFTabBar

`SAIFTabBar` is the declarative (markup-persisted) implementation of the library's two independent tab-bar implementations: consuming pages declare tabs directly in `.aspx` markup (`ParseChildren(True, "Tabs")`), and the control manages selection state, sorting, and CSS-class application for `TabBar` (mutually exclusive) or `WizardTabBar` (sequential) modes*.

## Purpose
- Render a tab bar from a markup-declared, sortable collection of `SAIFTabBarTab` entries.
- Enforce mutually exclusive tab selection in standard `TabBar` mode ([BR-V2-006](../../business-rules.md#br-v2-006-saiftabbar-tab-selection-is-mutually-exclusive-in-tabbar-mode)), or sequential "selected + sibling" styling in `WizardTabBar` mode.
- Provide bulk operations (enable/disable, show/hide) across all tabs.

## Context
- Namespace: `SAIF.Presentation.Web.Controls.V2`
- Assembly/package: Compiled into `SAIF.BOF.Presentation.Web.Infragistics103`*

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `Mode` | `Public Property Mode As TabBarMode` | Selects mutually-exclusive (`TabBar`) or sequential (`WizardTabBar`) selection/styling behavior. |
| `AllowSelectedTabClick` | `Public Property AllowSelectedTabClick As Boolean` | When `False` (default), clicking the already-selected tab is suppressed client-side (`return false;`), preventing a redundant postback. |
| `SelectedTab` | `Public ReadOnly Property SelectedTab As SAIFTabBarTab` | Returns the currently selected tab model, or `Nothing` if none is selected. |
| `Item(inTabKey)` (default) | `Default Public ReadOnly Property Item(ByVal inTabKey As String) As SAIFTabBarTab` | Looks up a tab by its `ID` via the default indexer. |
| `Tabs` | `Public ReadOnly Property Tabs As SAIFTabBarTabCollection` | The markup-persisted collection of tabs managed by this control. |
| `TabClickedEventHandler` (Delegate) | `Public Delegate Sub TabClickedEventHandler(ByVal t As SAIFTabBarTab)` | Delegate signature for the `TabClicked` event. |
| `TabClicked` | `Public Event TabClicked As TabClickedEventHandler` | Raised after a tab click updates selection state, passing the newly selected `SAIFTabBarTab`. |
| `New()` | `Public Sub New()` | Constructs the control with no non-default initialization beyond the base `WebControl`; the tab collection is populated later by markup parsing rather than in the constructor*. |
| `DisableAllTabs()` | `Public Sub DisableAllTabs()` | Bulk-disables every tab, so consuming pages can grey out the whole tab bar (e.g., while a dependent process is unavailable) without iterating `Tabs` themselves. |
| `EnableAllTabs()` | `Public Sub EnableAllTabs()` | Bulk-restores clickability of every tab, reversing `DisableAllTabs()` in a single call. |
| `HideAllTabs()` | `Public Sub HideAllTabs()` | Bulk-hides every tab, letting a host page collapse the entire tab bar (e.g., when no tab content applies) without per-tab visibility logic. |
| `ShowAllTabs()` | `Public Sub ShowAllTabs()` | Bulk-restores visibility of every tab, reversing `HideAllTabs()` in a single call. |

## Inherited public members

`SAIFTabBar` inherits from `WebControl` (`System.Web.UI.WebControls`), a framework base class rather than a documented SAIF dependency library.

| Member | Signature | Purpose |
| --- | --- | --- |
| `AccessKey` | `Public Property AccessKey As String` | Keyboard shortcut character used to quickly navigate focus to the rendered element. |
| `Attributes` | `Public ReadOnly Property Attributes As AttributeCollection` | Collection of arbitrary name/value HTML attributes rendered on the control's outer tag. |
| `BackColor` | `Public Property BackColor As Color` | Background color applied to the rendered outer element. |
| `ForeColor` | `Public Property ForeColor As Color` | Foreground (text) color applied to the rendered outer element. |
| `BorderColor` | `Public Property BorderColor As Color` | Border color applied to the rendered outer element. |
| `BorderStyle` | `Public Property BorderStyle As BorderStyle` | Border line style applied to the rendered outer element. |
| `BorderWidth` | `Public Property BorderWidth As Unit` | Border width applied to the rendered outer element. |
| `CssClass` | `Public Property CssClass As String` | CSS class name(s) rendered on the control's outer tag. |
| `Enabled` | `Public Property Enabled As Boolean` | Controls whether the rendered element is enabled and participates in postbacks. |
| `Font` | `Public ReadOnly Property Font As FontInfo` | Font styling applied to the rendered outer element. |
| `Height` | `Public Property Height As Unit` | Height of the rendered outer element. |
| `Width` | `Public Property Width As Unit` | Width of the rendered outer element. |
| `Style` | `Public ReadOnly Property Style As CssStyleCollection` | Inline CSS style declarations rendered on the outer tag. |
| `TabIndex` | `Public Property TabIndex As Short` | Tab order of the rendered element among focusable page elements. |
| `ToolTip` | `Public Property ToolTip As String` | Text shown as a native tooltip when hovering the rendered element. |
| `ControlStyle` | `Public ReadOnly Property ControlStyle As Style` | The `Style` object backing the CSS-related properties above. |
| `RenderBeginTag` / `RenderEndTag` | `Public Overridable Sub RenderBeginTag/RenderEndTag(ByVal writer As HtmlTextWriter)` | Writes the opening/closing outer HTML tag and its attributes/styles. |

Standard `WebControl`/`Control` members (`ID`, `ClientID`, `Controls`, `Visible`, `DataBind`, `FindControl`, etc.) are not re-documented here as they are unmodified framework behavior**.

## Behavioral notes
- `CreateChildControls` sorts `_Tabs` (`Order`, then `Text`) and builds one `<li><LinkButton></li>` per tab, wiring each `LinkButton.Click` to `RaiseTabClickedEvent`.
- `RaiseTabClickedEvent` deselects all tabs first when `Mode = TabBarMode.TabBar` (mutual exclusivity, [BR-V2-006](../../business-rules.md#br-v2-006-saiftabbar-tab-selection-is-mutually-exclusive-in-tabbar-mode)), then selects the clicked tab and raises `TabClicked`.
- `RenderControl` applies `Selected`/`SelectedSibling`/`Disabled`/`DisabledSelected` CSS classes per tab based on state and `Mode`, and wraps rendering in a `Try`/`Catch` that writes exception details directly to the output stream on failure*.
- See [Tab selection](../../operations/tab-selection.md) for the full step-by-step operation shared with `SAIFTabs`.

## Constraints and usage notes
- Tabs are declared in markup (`ParseChildren(True, "Tabs")`), not added imperatively; for code-driven tab management, use `SAIFTabs` instead.
- `SAIFTabBar`'s error-handling in `RenderControl` surfaces raw exception details to the rendered page output, which may be unsuitable for production error handling*.

> **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.V2\SAIFTabBar.vb
