---
title: HidableInfragisticsColumn
summary: API reference for HidableInfragisticsColumn.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.AJAX.Infragistics111
reference_type: package
---

# HidableInfragisticsColumn

`HidableInfragisticsColumn` is the per-column unit of state managed by [InfragisticsGridCustomizer](InfragisticsGridCustomizer.md): it wraps one `UltraGridColumn` alongside the visibility flags and mode that determine whether the column can be toggled by the user, and how it should be inserted or removed from the live grid. ([BR-AJAX-025](../../business-rules.md#br-ajax-025-a-columns-initial-visibility-is-derived-from-the-grid-definition), [BR-AJAX-026](../../business-rules.md#br-ajax-026-an-always-hidden-column-is-forced-server-only-others-are-cleared))

## Purpose
- Wraps an `UltraGridColumn` so `InfragisticsGridCustomizer` can track and manipulate visibility independently of the grid's live `Columns` collection.
- Derives its initial visibility from the grid's own design-time `Hidden`/`ServerOnly` flags, so the customizer's starting state matches designer intent. ([BR-AJAX-025](../../business-rules.md#br-ajax-025-a-columns-initial-visibility-is-derived-from-the-grid-definition))
- Forces always-hidden columns to `ServerOnly` and clears `Hidden`/`ServerOnly` on all other columns at construction time, so the customizer becomes the single point of control over visibility going forward. ([BR-AJAX-026](../../business-rules.md#br-ajax-026-an-always-hidden-column-is-forced-server-only-others-are-cleared))

## Context
- Namespace: `SAIF.Presentation.Web.Controls.V2.AJAX`
- Assembly/package: `SAIF.Presentation.Web.Controls.AJAX.Infragistics111` (packaged in `SAIF.BOF.Presentation.Web.Infragistics111`)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `New` | `Sub New(column As UltraGridColumn, mode As InfragisticsGridCustomizer.VisiblityModes)` | Wraps the column, records its visibility mode, and normalizes `Hidden`/`ServerOnly` per the mode ([BR-AJAX-026](../../business-rules.md#br-ajax-026-an-always-hidden-column-is-forced-server-only-others-are-cleared)) |
| `IsVisible` | `Property IsVisible As Boolean` | Whether the wrapped column is currently visible to the user, driving `ManipulateGrid`'s insert/remove decision ([BR-AJAX-040](../../business-rules.md#br-ajax-040-hiding-a-column-removes-it-entirely-re-showing-reinserts-it-at-its-original-position)) |
| `VisibilityMode` | `ReadOnly Property VisibilityMode As InfragisticsGridCustomizer.VisiblityModes` | `Normal`, `AlwaysVisible`, or `AlwaysHidden` — governs whether `IsVisible` can be changed by the user or saved preferences ([BR-AJAX-028](../../business-rules.md#br-ajax-028-always-visible-or-always-hidden-columns-cannot-be-changed)) |
| `Hidden` | `ReadOnly Property Hidden As Boolean` | The wrapped column's original design-time `Hidden` flag |
| `ServerOnly` | `ReadOnly Property ServerOnly As Boolean` | The wrapped column's original design-time `ServerOnly` flag |
| `Key` | `ReadOnly Property Key As String` | The wrapped column's key, used to match saved column-selection preferences ([BR-AJAX-027](../../business-rules.md#br-ajax-027-a-saved-preference-for-a-removed-column-is-ignored)) |
| `Header` | `ReadOnly Property Header As ColumnHeader` | The wrapped column's header, used to derive the checkbox-list label ([BR-AJAX-033](../../business-rules.md#br-ajax-033-a-column-with-no-header-caption-is-labeled-from-its-key)) |

## Behavioral notes
- Only columns whose `VisibilityMode` is `Normal` are ever inserted into or removed from the grid by `ManipulateGrid`; `AlwaysVisible` and `AlwaysHidden` columns are left untouched regardless of `IsVisible`. ([BR-AJAX-028](../../business-rules.md#br-ajax-028-always-visible-or-always-hidden-columns-cannot-be-changed))

## Constraints and usage notes
- Instances are created only by `InfragisticsGridCustomizer.InitializeColumnList` after validating that the corresponding override column key exists on the target grid; there is no public factory for creating one independently. ([BR-AJAX-024](../../business-rules.md#br-ajax-024-every-override-column-must-exist-on-the-target-grid))

## Related documentation
- [Index](../../index.md)
- [Overview](../../overview.md)
- [Architecture](../../architecture.md)
- [Business rules](../../business-rules.md)
- [Operations and processes](../../operations-processes.md)
- [API reference](../index.md)

## Sources
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb`
