List Views — User Guide¶
Audience: Site administrators, list owners, and end users who need to create, configure, and manage list views in Cesivi.
See also: Columns guide · Site Collections guide · List Items guide
Overview¶
A view defines how the items in a list or library are displayed: which columns appear, the sort order, filters, grouping, row limit, and the view type (Standard, Calendar, Gantt, Datasheet). Every list has at least one view — the default view — that opens when you navigate to AllItems.aspx without a ?View= parameter.
Cesivi supports all four SharePoint classic view types:
| View type | Key ID | Use case |
|---|---|---|
| Standard (HTML) | HTML |
General-purpose grid view |
| Calendar | CALENDAR |
Events / date-based display |
| Gantt | GANTT |
Task scheduling / timelines |
| Datasheet | GRID |
Inline quick-edit spreadsheet |
Navigating to Views¶
| URL pattern | What you see |
|---|---|
/Lists/{ListName}/AllItems.aspx |
Default view of the list |
/Lists/{ListName}/{ViewName}.aspx |
Specific named view |
/_layouts/15/ViewType.aspx?List={ListName} |
View-type chooser (Standard / Calendar / Gantt / Datasheet) |
/_layouts/15/viewnew.aspx?List={ListName} |
Create a new Standard view directly |
/_layouts/15/viewedit.aspx?List={ListName}&ViewName={Name} |
Edit an existing view |
Creating a Standard View¶
- Open the list (e.g.
/Lists/Tasks/AllItems.aspx). - In the toolbar, click Create View → Standard View (or go directly to
ViewType.aspx). - Fill in the view form:
- View Name — unique name within this list.
- Columns — check which columns should appear and drag them to reorder.
- Sort — up to two levels (Primary field + direction).
- Filter — one or two conditions joined by AND/OR.
- Group By — up to one grouping field.
- Row Limit — how many items per page (default: 30). Check Limit the total number of items returned for a hard cap instead of paging.
- Set as default view — check to promote this view to be the landing view.
- Click OK to save.

Creating a Calendar View¶
Calendar views require a list that has at least one Date and Time column (e.g. the Events list template has EventDate and EndDate).
- Go to
/_layouts/15/ViewType.aspx?List={ListName}and select Calendar. - In the view form that opens:
- Choose the Start Date field from the
Calendar Start Fieldselector. - Optionally choose the End Date field.
- Choose the Title field.
- Click OK to save.
The resulting view renders a monthly/weekly/daily calendar widget.

Creating a Gantt View¶
Gantt views are suitable for task/project lists (Tasks template 107, or any list with DateTime columns).
- Go to
/_layouts/15/ViewType.aspx?List={ListName}and select Gantt. - In the view form:
- Choose the Start Date field (
GanttStartField). - Choose the End/Due Date field (
GanttEndField). - Choose the Title field.
- Click OK to save.

Creating a Datasheet (Quick Edit) View¶
Datasheet views display items as an editable spreadsheet grid where you can edit cells inline.
- Go to
/_layouts/15/ViewType.aspx?List={ListName}and select Datasheet. - Choose columns and row limit, then click OK.
The resulting AllItems.aspx view for this view type sets spPageContext.isDatasheetView = true and activates the quick-edit toolbar.
Editing a View¶
- Open the view you want to edit.
- In the toolbar, click Modify this View or navigate directly to:
/_layouts/15/viewedit.aspx?List={ListName}&ViewName={ViewName} - Change any settings (columns, sort, filter, group-by, row limit, view type).
- Click OK to save.

Tip: When you change the View Type radio button on the edit form, type-specific settings sections (calendar, gantt, datasheet) appear and hide automatically.
Setting the Default View¶
Only one view can be the default at a time. When you navigate to AllItems.aspx without a ?View= query parameter, the default view opens.
To change the default:
- Open viewedit.aspx for the view you want to promote.
- Check the Make this the default view checkbox.
- Click OK.
The previous default view is automatically demoted.
Restriction: The current default view cannot be deleted. The Delete button is hidden on its
viewedit.aspxpage. Demote it to a non-default view first.

Deleting a View¶
- Open
viewedit.aspxfor the view you want to delete. - Click the Delete button (only visible for non-default views).
- Confirm the deletion.
The view is permanently removed. The list's default view is unaffected.
Note: You cannot delete the last remaining view on a list (the default must always exist).
Personal Views (My Views)¶
A Personal View is visible only to the user who created it. It does not appear in other users' view selectors.
Creating a personal view¶
- On
viewnew.aspx, check the Personal View checkbox before saving. - Once personal is selected, the Make Default View checkbox hides automatically (personal views cannot be the list's shared default).
Identifying a personal view in viewedit¶
When you open a personal view in viewedit.aspx, a Personal View badge appears at the top of the form. The Make Default View checkbox is hidden for personal views.

REST API visibility¶
Personal views appear in the REST _api/web/lists/getbytitle('X')/views collection with PersonalView: true. Other users' REST calls return only shared views for that user's context.
Sort, Filter, Group By¶
All three settings round-trip through viewedit.aspx:
| Setting | What it does | CAML element |
|---|---|---|
| Sort By (primary + secondary) | Orders rows by one or two fields | <OrderBy> |
| Filter (1–2 conditions + AND/OR) | Restricts which items appear | <Where> |
| Group By | Collapses rows into collapsible groups | <GroupBy> |
Filter operators supported:
| Operator label | CAML element |
|---|---|
| Equal to | <Eq> |
| Not equal to | <Neq> |
| Greater than | <Gt> |
| Less than | <Lt> |
| Contains | <Contains> |
| Begins with | <BeginsWith> |
| Is null | <IsNull> |
| Is not null | <IsNotNull> |
View Scope (Document Libraries)¶
For document libraries, the Scope property controls whether folders are shown:
| Scope value | Behaviour |
|---|---|
| 0 (Default) | Show files and folders at the current folder level |
| 1 (FilesOnly) | Show only files (no folder rows) |
| 8 (RecursiveAll) | Show all files from all sub-folders flattened |
Scope is set via the REST API (Scope property on SP.View) or programmatically.
Sub-Web Views¶
Views in sub-web lists work exactly like root-web list views. The SPWebPath context header routes operations to the correct web.
| URL pattern | Notes |
|---|---|
/subweb/Lists/{List}/AllItems.aspx |
Default view in a depth-1 sub-web |
/sub/grand/Lists/{List}/AllItems.aspx |
Default view in a depth-2 sub-web |
Views created in a sub-web list are scoped to that web — they do not affect the root web's lists of the same name.
Cross-Client API Compatibility¶
All view operations are available via all four client surfaces:
| Client | Create | Update | Delete | Get |
|---|---|---|---|---|
| REST | POST /_api/web/lists/getbytitle('X')/views |
MERGE .../views/getbytitle('X') |
DELETE .../views/getbytitle('X') |
GET .../views |
| SOAP Views.asmx | AddView |
UpdateView |
DeleteView |
GetViewCollection / GetView |
| CSOM | ViewCollection.Add(ViewCreationInformation) |
view.Update() |
view.DeleteObject() |
list.Views |
| PnP PowerShell | Add-PnPView |
Set-PnPView |
Remove-PnPView |
Get-PnPView |
REST Quick Reference¶
# Get all views for a list
GET /_api/web/lists/getbytitle('MyList')/views
Accept: application/json
# Get a specific view by title
GET /_api/web/lists/getbytitle('MyList')/views/getbytitle('All Items')
# Create a view
POST /_api/web/lists/getbytitle('MyList')/views
Content-Type: application/json
{
"__metadata": { "type": "SP.View" },
"Title": "My View",
"ViewFields": { "results": ["Title", "Created"] },
"RowLimit": 30,
"DefaultView": false,
"PersonalView": false,
"ViewType": "HTML"
}
# Update a view
MERGE /_api/web/lists/getbytitle('MyList')/views/getbytitle('My View')
IF-MATCH: *
Content-Type: application/json
{ "__metadata": { "type": "SP.View" }, "RowLimit": 50 }
# Delete a view
DELETE /_api/web/lists/getbytitle('MyList')/views/getbytitle('My View')
IF-MATCH: *
PnP PowerShell Quick Reference¶
# Connect
Connect-PnPOnline -Url "https://cesivi.local/Default/RootSite" -Credentials $cred
# List all views
Get-PnPView -List "MyList"
# Get a specific view
Get-PnPView -List "MyList" -Identity "All Items"
# Create a view
Add-PnPView -List "MyList" -Title "My View" -Fields Title,Created -RowLimit 30
# Update a view's row limit
Set-PnPView -List "MyList" -Identity "My View" -Values @{ RowLimit = 50 }
# Delete a view
Remove-PnPView -List "MyList" -Identity "My View" -Force
CSOM Quick Reference¶
using var ctx = new ClientContext("https://cesivi.local/Default/RootSite");
ctx.Credentials = new NetworkCredential("admin", "admin");
var list = ctx.Web.Lists.GetByTitle("MyList");
ctx.Load(list);
ctx.ExecuteQuery();
// Create
var view = list.Views.Add(new ViewCreationInformation
{
Title = "My View",
ViewTypeKind = ViewType.Html,
RowLimit = 30,
SetAsDefaultView = false,
ViewFields = new[] { "Title", "Created" }
});
ctx.ExecuteQuery();
// Update
view.RowLimit = 50;
view.Update();
ctx.ExecuteQuery();
// Delete
view.DeleteObject();
ctx.ExecuteQuery();
WCAG 2.1 AA Conformance — List Views (PLAN-1642)¶
Surface #5 (List Views) was audited and remediated as part of the v1.4 Group A1 accessibility campaign.
Result: 0 critical + 0 serious axe-core violations across 22 registered routes. KnownAxeAcceptances = [] — no color-contrast or region waivers.
Automated Gate Results¶
| Gate | Tests | Result |
|---|---|---|
| axe-core WCAG 2.1 AA (22 routes) | 10 test methods | ✅ 0 critical, 0 serious |
| Keyboard navigation | 18 tests | ✅ 18/18 GREEN |
| Screen-reader semantics | 16 tests | ✅ 16/16 GREEN |
| Narrator proxy report | — | Filed |
Remediations Applied¶
| Area | Fix | Rule |
|---|---|---|
| AllItems sortable column headers | Removed spurious role="button" from thContent div in ml-grid.js (chevron inside already has role="button" — nested interactive violation) |
nested-interactive |
| Calendar grid structure | Added role="row" wrappers with display:contents so CSS Grid layout is unaffected while ARIA tree is correct (role="grid" → role="row" → role="columnheader"/role="gridcell") |
aria-required-children, aria-required-parent |
| Calendar "New Event" button | Added .sp-cal-new-event-btn class + CSS override #0065b3 (5.05:1 contrast ratio) in _a11y.css |
color-contrast |
| Viewedit filter selects | Added aria-label to all 5 filter <select> elements (FilterField1, FilterOp1, FilterConnector, FilterField2, FilterOp2) |
select-name |
| Viewnew filter selects | Same aria-label additions |
select-name |
| Column internal-name spans | Changed color:#888 (4.47:1) → color:#595959 in Viewedit and Viewnew |
color-contrast |
WCAG 2.1 AA Criterion Coverage¶
| Criterion | Level | Status |
|---|---|---|
| 1.1.1 Non-text Content | A | ✅ |
| 1.3.1 Info and Relationships | A | ✅ Calendar role="grid" structure correct |
| 1.3.2 Meaningful Sequence | A | ✅ |
| 1.4.3 Contrast (Minimum) | AA | ✅ All fixed to ≥4.5:1 |
| 2.1.1 Keyboard | A | ✅ 18-test keyboard gate |
| 2.4.1 Bypass Blocks | A | ✅ Skip-nav on all 22 routes |
| 2.4.3 Focus Order | A | ✅ |
| 2.4.7 Focus Visible | AA | ✅ |
| 3.3.2 Labels or Instructions | A | ✅ All filter selects labeled |
| 4.1.2 Name, Role, Value | A | ✅ No nested-interactive; all selects have accessible names |
Residual Moderate/Minor Violations¶
Moderate and minor violations (if any were found) are non-blocking at the gate threshold. No waivers were granted for critical or serious violations.