Columns (Site Columns + List Columns) — User Guide¶
Audience: Site administrators and list owners who need to create, configure, and manage columns in Cesivi.
Overview¶
Columns (also called fields) define the schema of a list or library. Cesivi supports two scopes:
- Site columns — defined once at the site level and reusable across any list or library in the same site or any sub-site. Equivalent to SharePoint's "Site Columns" gallery.
- List columns — defined directly on a specific list or library and not shared with other lists.
Column type support¶
Cesivi supports all 13 SharePoint-classic column types:
| Type | Display name |
|---|---|
Text |
Single line of text |
Note |
Multiple lines of text |
Number |
Number |
Currency |
Currency |
DateTime |
Date and Time |
Choice |
Choice (menu to choose from) |
MultiChoice |
Choice (multi-value checkboxes) |
Boolean |
Yes/No |
User |
Person or Group |
URL |
Hyperlink or Picture |
Lookup |
Lookup (linked to another list) |
Calculated |
Calculated (formula) |
TaxonomyFieldType |
Managed Metadata |
Site Columns¶
Viewing the Site Column Gallery¶
Navigate to Site Settings → Columns or directly to:
/_layouts/15/Mngfield.aspx
(Without a ?List= parameter, this page displays the site-column gallery grouped by column group.)
The gallery shows: - Column name and type - Group (e.g. "Custom Columns", "Core Document Columns") - Edit and Delete actions

Creating a Site Column¶
- From the site-column gallery, click Create (or navigate to
/_layouts/15/Fldnew.aspxwithout a?List=parameter). - Fill in:
- Column name — internal name and display name
- Column type — select from the 13 supported types
- Group — assign to a group for organization (default: "Custom Columns")
- Type-specific options (e.g. Choice entries, number min/max, formula for Calculated)
- Click Save. The column appears in the site-column gallery.

Editing a Site Column¶
- In the site-column gallery, click the column name or use the Edit action.
- Modify any editable properties (display name, description, required, default value).
- Click Save.
Note: Changing a site column's type is not supported after creation — consistent with SharePoint behavior.
Deleting a Site Column¶
- In the site-column gallery, use the Delete action next to the column.
- Confirm the deletion dialog.
- The column is removed from the gallery. Any list that had this column attached will lose the column from its field collection.
Warning: Deletion is permanent. Verify no lists depend on the column before confirming.
List Columns¶
Viewing List Columns (Mngfield)¶
Navigate to a list's column management page:
/_layouts/15/Mngfield.aspx?List=<list-title>
Or from any list: List Settings → Columns section.
The page shows all columns on the list grouped by content type, with indicators for: - Required (asterisk) - Indexed (lightning-bolt icon) - Hidden columns (shown in dimmed style)

Creating a List Column¶
- From Mngfield, click Create Column, or navigate directly to:
/_layouts/15/Fldnew.aspx?List=<list-title> - Fill in the column name, type, and type-specific options.
- Click Save. You are redirected to Mngfield where the new column appears.

Editing a List Column¶
- In Mngfield, click the column name or use the ECB → Edit action.
- Modify properties (description, required, default value, indexed flag).
- Click Save.

Deleting a List Column¶
- In Mngfield, use the ECB → Delete action next to the column.
- Confirm the dialog. The column is removed from the list schema and from all existing items (values are discarded).
Attaching a Site Column to a List (Fldpick)¶
Instead of creating a new list column from scratch, you can attach an existing site column:
-
Navigate to:
Or from Mngfield: Add from existing site columns./_layouts/15/Fldpick.aspx?List=<list-title> -
Browse the site-column gallery. Columns are grouped by their Group value.
- Check the checkbox next to one or more columns.
- Click Add.
The selected site columns are linked to the list. They appear in: - Mngfield (column list) - AllItems default view (as columns) - NewForm, EditForm, DispForm (as form fields)

Tip: Site column changes (e.g. renaming the display name) propagate to all lists that have the column attached, without requiring manual updates per list.
Column Default Values (FldDefaultSettings)¶
To set a default value for a column on a specific list:
-
Navigate to:
/_layouts/15/FldDefaultSettings.aspx?List=<list-title> -
Click the column name to set its default value.
-
Enter the default value appropriate for the column type (text string, number, date expression, user login, etc.).
-
Click Save.
New items added to the list will pre-populate with the configured default value.

Indexed Columns (IndxField)¶
Indexing a column improves query performance on large lists (equivalent to a database index). Cesivi supports single-column indexes on simple types (Text, Number, DateTime, Choice, Boolean, User, URL, Lookup).
Note: Multi-line text (Note), Multi-choice, and Calculated columns cannot be indexed — consistent with SharePoint behavior.
Creating an Index¶
-
Navigate to:
/_layouts/15/IndxField.aspx?List=<list-title> -
Select the column from the Primary column dropdown.
- Click Create.
The column appears in the indexed columns gallery with a lightning-bolt indicator in Mngfield.

Removing an Index¶
- On the IndxField page, select the indexed column.
- Click Delete.
Column Order (Columnorder)¶
Control the order in which columns appear on forms (NewForm, EditForm, DispForm) and in Mngfield:
-
Navigate to:
/_layouts/15/Columnorder.aspx?List=<list-title> -
Drag rows up or down to reorder columns.
- Click Save.
The new order is reflected immediately in Mngfield and in the default list view.

Advanced Column Types¶
Calculated Columns¶
Calculated columns compute their value from a formula using other column values.
Creating a Calculated column:
1. On Fldnew, select Calculated (calculation based on other columns).
2. Enter the formula using SharePoint formula syntax, e.g.:
- =[Price]*[Quantity] — numeric multiply
- =TEXT([Modified],"dd/MM/yyyy") — format a date as text
- =IF([Status]="Done","Complete","Pending") — conditional
3. Select the Return type (Single line of text, Number, Currency, Date and Time, Yes/No).
4. Click Save.

Note: Cesivi evaluates formulas server-side when items are saved. Invalid formula syntax is rejected with an error message.
Managed Metadata Columns (TaxonomyFieldType)¶
Managed Metadata columns link to a term set in the Cesivi Term Store.
Creating a Managed Metadata column: 1. On Fldnew, select Managed Metadata. 2. In the Term Set Settings section, browse or search for a term set. 3. Optionally enable Allow multiple values. 4. Click Save.
On NewForm/EditForm, the column renders as a searchable tree picker showing the term hierarchy.

Multi-Value Lookup Columns¶
Lookup columns can be configured to allow multiple selections:
- On Fldnew, select Lookup.
- Choose the Get information from list and the In this column field.
- Enable Allow multiple values.
- Optionally add Additional columns to display alongside the primary lookup field.
- Click Save.
On AllItems view, multi-value lookups display all selected values separated by semicolons.

Sub-Site Column Inheritance¶
Site columns defined in the root web are inherited by all sub-sites. When you navigate to a sub-site's Fldpick, you will see the root web's site columns available for attachment.
List columns created within a sub-site (at any depth) are scoped to that sub-site's list — they do not appear in parent or sibling sites.
URL patterns for sub-site column pages:
| Depth | Fldnew | Mngfield | Fldpick |
|---|---|---|---|
| Root | /_layouts/15/Fldnew.aspx?List=... |
/_layouts/15/Mngfield.aspx?List=... |
/_layouts/15/Fldpick.aspx?List=... |
| Depth 1 | /subweb/_layouts/15/Fldnew.aspx?List=... |
/subweb/_layouts/15/Mngfield.aspx?List=... |
/subweb/_layouts/15/Fldpick.aspx?List=... |
| Depth 2 | /parent/child/_layouts/15/Fldnew.aspx?List=... |
/parent/child/_layouts/15/Mngfield.aspx?List=... |
/parent/child/_layouts/15/Fldpick.aspx?List=... |
API Access to Columns¶
Column operations are exposed via all four Cesivi API surfaces:
REST API¶
# Get all site columns
GET /_api/web/fields
# Get a specific site column
GET /_api/web/fields/getbytitle('MyColumn')
# Create a site column
POST /_api/web/fields
Content-Type: application/json
{ "__metadata": { "type": "SP.Field" }, "Title": "MyColumn", "FieldTypeKind": 2 }
# Delete a site column
POST /_api/web/fields/getbytitle('MyColumn')
X-HTTP-Method: DELETE
# Get list columns
GET /_api/web/lists/getbytitle('MyList')/fields
# Create a list column
POST /_api/web/lists/getbytitle('MyList')/fields
Content-Type: application/json
{ "__metadata": { "type": "SP.Field" }, "Title": "MyListColumn", "FieldTypeKind": 9 }
CSOM¶
using var ctx = new ClientContext("https://cesivi.example.com/");
var web = ctx.Web;
// Create a site column
var fieldXml = "<Field Type='Text' Name='MyColumn' DisplayName='My Column' />";
var field = web.Fields.AddFieldAsXml(fieldXml, false, AddFieldOptions.AddToNoContentType);
ctx.Load(field, f => f.Title, f => f.FieldTypeKind);
ctx.ExecuteQuery();
// Delete a site column
field.DeleteObject();
ctx.ExecuteQuery();
PnP PowerShell¶
# Connect
Connect-PnPOnline -Url https://cesivi.example.com/ -Credentials (Get-Credential)
# Create a site column
Add-PnPField -DisplayName "My Column" -InternalName "MyColumn" -Type Text
# Create a list column
Add-PnPField -List "My List" -DisplayName "My Number" -InternalName "MyNumber" -Type Number
# Get all web-level fields
Get-PnPField
# Remove a site column
Remove-PnPField -Identity "MyColumn" -Force
SOAP (Lists.asmx)¶
<!-- Add a field via UpdateList -->
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:sp="http://schemas.microsoft.com/sharepoint/soap/">
<soap:Body>
<sp:UpdateList>
<sp:listName>My List</sp:listName>
<sp:listProperties></sp:listProperties>
<sp:newFields>
<Fields>
<Method ID="1" Cmd="NewField">
<Field Type="Text" DisplayName="My Column" Name="MyColumn" />
</Method>
</Fields>
</sp:newFields>
<sp:updateFields></sp:updateFields>
<sp:deleteFields></sp:deleteFields>
<sp:listVersion></sp:listVersion>
</sp:UpdateList>
</sp:Body>
</soap:Envelope>
Troubleshooting¶
Column does not appear in AllItems view after creation¶
By default, new columns are added to the list schema but may not be added to the default view. To add the column to the default view: 1. Go to List Settings → Views → All Items and add the column. 2. Alternatively, use Fldnew with the Add to default view option checked.
Site column not visible in Fldpick¶
- Ensure the column is defined in the current site or a parent site. Fldpick only shows columns from the current site's inheritance chain.
- Columns in a sibling site are not visible.
Calculated column shows #VALUE! in items¶
- Verify the formula references column internal names (not display names).
- Confirm all referenced columns exist on the list.
- Check that the return type matches the formula output (e.g. don't set "Number" return type for a formula that returns text).
Cannot delete a site column¶
- A site column referenced by any content type cannot be deleted until it is removed from all content types first.
- Navigate to Site Settings → Content Types and remove the column from each content type that references it.
WCAG 2.1 AA Conformance — Site Columns + List Columns¶
Status: ✅ PASS — PLAN-1641 (2026-05-29)
Cesivi's site-column and list-column management pages meet WCAG 2.1 Level AA. All 13 audited routes pass automated axe-core 4.11 checks with KnownAxeAcceptances = [] (no color-contrast or region waivers accepted).
Criteria Summary¶
| WCAG Criterion | Status | Notes |
|---|---|---|
| 1.3.1 Info and Relationships (A) | ✅ PASS | All data tables use scope="col" / scope="colgroup" on <th> elements |
| 1.3.2 Meaningful Sequence (A) | ✅ PASS | Reading order matches visual order |
| 1.4.1 Use of Color (A) | ✅ PASS | Links distinguished by underline, not color alone |
| 1.4.3 Contrast (Minimum) (AA) | ✅ PASS | #888 gray replaced with #595959 (6.44:1); Bootstrap code color overridden; badge backgrounds corrected |
| 2.1.1 Keyboard (A) | ✅ PASS | All form controls focusable; Columnorder Up/Down keyboard reorder enabled |
| 2.1.2 No Keyboard Trap (A) | ✅ PASS | No focus traps on any page |
| 2.4.1 Bypass Blocks (A) | ✅ PASS | Skip-to-main-content link present on all 13 routes |
| 2.4.3 Focus Order (A) | ✅ PASS | Focus order follows logical reading sequence |
| 2.4.7 Focus Visible (AA) | ✅ PASS | :focus-visible CSS with non-none outline on all interactive elements |
| 3.3.1 Error Identification (A) | ✅ PASS | Validation errors use aria-invalid + aria-describedby |
| 3.3.2 Labels or Instructions (A) | ✅ PASS | All inputs and selects labeled; aria-label on FldDefaultSettings per-cell inputs |
| 4.1.2 Name, Role, Value (A) | ✅ PASS | Columnorder announce region uses aria-live="polite" + aria-atomic="true"; reorder buttons include column name in aria-label |
Automated Test Coverage¶
- Axe-core gate: 5 test methods covering all 13 surface #4 routes (
SiteAndListColumnsA11yTests.cs) - Keyboard navigation: 15 tests covering skip-nav, focus-visible, table header scope, select labels, formula
aria-describedby, reorder buttons (SiteAndListColumnsKeyboardTests.cs) - Screen-reader semantics: 11 tests covering
scope="colgroup", column-group headers, decorative-iconaria-hidden, aria-live announcer (SiteAndListColumnsScreenReaderTests.cs) - Narrator proxy report:
_project/areas/a11y/site-and-list-columns-narrator-report-1641.md
New Keyboard Feature: Column Reorder¶
The Column Order page (/_layouts/15/columnorder.aspx) now supports keyboard-driven column reordering:
- Up (▲) and Down (▼) buttons are keyboard-activatable (Tab + Enter/Space)
- Each button's
aria-labelincludes the column name (e.g., "Move Title up") for screen-reader users - An
aria-live="polite"region announces the new position after each move - Mouse drag-and-drop is retained as an alternative interaction method
Residual Minor Violations¶
None. All violations discovered in Phase 0 were fixed in Phase A.
Related Documentation¶
- Site Collections and Sub-Sites — site hierarchy and sub-web management
- List Items and File Uploads — working with list items (which use columns)
- Views — list views select and order which columns are displayed
Generated by PLAN-1630 — Cesivi v1.3, 2026-05-29