Pending Review
Last Updated: 14 Oct 2026 15:26 by Lee
Lee
Created on: 14 Oct 2026 15:26
Category: Kendo UI for jQuery
Type: Bug Report
0
TreeList with a locked column announces the wrong column header to screen readers

Product: Kendo UI for jQuery — TreeList (also related Grid issues below)
Version: 2026.2.520 (2026 Q2), jQuery 3.5.1
Browser / AT: Google Chrome 155 (Windows 11) with NVDA (latest)
Severity: Accessibility (WCAG 2.2 SC 1.3.1 Info and Relationships)

Summary
In a TreeList that has a locked column, NVDA announces the locked column's header instead of the current column's header when keyboard focus moves to a cell in the scrollable part.

A Grid with the same layout (locked column + scrollable columns + hidden columns) is announced correctly, so the problem seems specific to how the TreeList builds its accessible table (`role="treegrid"` with rows assembled through `aria-owns`).

Here is a Dojo showing the issue: https://dojo.telerik.com/QYJCWJUj

Steps to reproduce
1. Create a TreeList with `navigatable: true`, one or more locked columns (including a hidden locked column) and several unlocked columns (sample here).
2. Open it in Chrome with NVDA running.
3. Click a cell in the first unlocked column ("April"), or Tab into the TreeList and use the arrow keys to reach it.

Expected
NVDA announces the cell, its row and its own column header, e.g.:
`0 / 8, row 2, April, column 2`

Actual
NVDA announces the locked column's header and wrong column number:
`0 / 8  April  row 2  Hierarchy  column 4`

Sample
<div id="treelist"></div>
<script>
  $("#treelist").kendoTreeList({
    navigatable: true,
    height: 300,
    dataSource: {
      data: [
        { id: 1, parentId: null, name: "Region A", apr: "0 / 8", may: "1 / 8", jun: "2 / 8", jul: "3 / 8" },
        { id: 2, parentId: 1, name: "Store 1", apr: "0 / 2", may: "1 / 2", jun: "2 / 2", jul: "2 / 2" }
      ],
      schema: { model: { id: "id", parentId: "parentId", expanded: true } }
    },
    columns: [
      { field: "id", title: "Id", hidden: true, locked: true, width: 80 },
      { field: "name", title: "Hierarchy", locked: true, width: 220 },
      { field: "mar", title: "March", hidden: true, width: 120 },
      { field: "apr", title: "April", width: 120 },
      { field: "may", title: "May", width: 120 },
      { field: "jun", title: "June", width: 120 },
      { field: "jul", title: "July", width: 120 }
    ]
  });
</script>

Moving right through the unlocked columns keeps announcing "Hierarchy" as the column header. The correct header is only heard because each cell's `aria-describedby` points to its header cell.

What we checked in the DOM
- The `role="treegrid"` table owns the `thead` and `tbody` row groups (`aria-owns`).
- The header row and every data row each own the same number of cells (locked cells first, then scrollable cells) in the same order. No element is owned twice.


0 comments