Skip to content

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

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

Site Column Gallery

Creating a Site Column

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

Create Site Column — Text type

Editing a Site Column

  1. In the site-column gallery, click the column name or use the Edit action.
  2. Modify any editable properties (display name, description, required, default value).
  3. Click Save.

Note: Changing a site column's type is not supported after creation — consistent with SharePoint behavior.

Deleting a Site Column

  1. In the site-column gallery, use the Delete action next to the column.
  2. Confirm the deletion dialog.
  3. 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)

Mngfield List Column Hub

Creating a List Column

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

Create List Column — Choice type

Editing a List Column

  1. In Mngfield, click the column name or use the ECB → Edit action.
  2. Modify properties (description, required, default value, indexed flag).
  3. Click Save.

Fldedit — Edit Column Settings

Deleting a List Column

  1. In Mngfield, use the ECB → Delete action next to the column.
  2. 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:

  1. Navigate to:

    /_layouts/15/Fldpick.aspx?List=<list-title>
    
    Or from Mngfield: Add from existing site columns.

  2. Browse the site-column gallery. Columns are grouped by their Group value.

  3. Check the checkbox next to one or more columns.
  4. 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)

Fldpick — Site Column Picker

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:

  1. Navigate to:

    /_layouts/15/FldDefaultSettings.aspx?List=<list-title>
    

  2. Click the column name to set its default value.

  3. Enter the default value appropriate for the column type (text string, number, date expression, user login, etc.).

  4. Click Save.

New items added to the list will pre-populate with the configured default value.

FldDefaultSettings — Default Values


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

  1. Navigate to:

    /_layouts/15/IndxField.aspx?List=<list-title>
    

  2. Select the column from the Primary column dropdown.

  3. Click Create.

The column appears in the indexed columns gallery with a lightning-bolt indicator in Mngfield.

IndxField — Indexed Columns

Removing an Index

  1. On the IndxField page, select the indexed column.
  2. Click Delete.

Column Order (Columnorder)

Control the order in which columns appear on forms (NewForm, EditForm, DispForm) and in Mngfield:

  1. Navigate to:

    /_layouts/15/Columnorder.aspx?List=<list-title>
    

  2. Drag rows up or down to reorder columns.

  3. Click Save.

The new order is reflected immediately in Mngfield and in the default list view.

Columnorder — Drag Reorder


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.

Fldnew — Calculated Column

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.

Fldnew — Managed Metadata

Multi-Value Lookup Columns

Lookup columns can be configured to allow multiple selections:

  1. On Fldnew, select Lookup.
  2. Choose the Get information from list and the In this column field.
  3. Enable Allow multiple values.
  4. Optionally add Additional columns to display alongside the primary lookup field.
  5. Click Save.

On AllItems view, multi-value lookups display all selected values separated by semicolons.

Fldnew — Lookup Multi-Value


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-icon aria-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-label includes 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.



Generated by PLAN-1630 — Cesivi v1.3, 2026-05-29