Completed
Last Updated: 09 Dec 2025 11:05 by ADMIN
Release 2026 Q1 (Feb)

Bug report

When using column virtualization in Kendo Grid, the save event returns an incorrect field name. After scrolling to virtualized columns, editing a cell displays the value from a different column.

Reproduction of the problem

  1. Open the Dojo - https://dojo.telerik.com/ulIlbauD
  2. Scroll and edit one of the columns, for example, edit a cell in column 'Field50'.
  3. Edit the value and click outside the cell to save

Current behavior

An incorrect value is displayed in the cell:

Image

The field in the save event is not correct; instead, Field48 is logged.

Expected/desired behavior

The correct field should be edited and returned in the save event when editing a Grid with virtual columns.

Environment

  • Kendo UI version: 2025.4.1111
  • Browser: [all ]
Unplanned
Last Updated: 12 Jan 2026 07:04 by changcheng

Bug report

When sorting is enabled for a virtualized Grid, in some cases, after scrolling to the bottom, the Grid does not show enough items to fill the tnire table.

Reproduction of the problem

  1. Open the Dojo - https://dojo.telerik.com/XZAkgwxd
  2. Scroll to the bottom and sort the table, for example, by ID

Current behavior

The Grid shows only the last page of items, while there are enough items to fill up the entire table

Image

Expected/desired behavior

Enough items to fill the Grid height should be displayed. There should be no blank space without records.

Environment

  • Kendo UI version: 2025.4.1111
  • Browser: [all]
Unplanned
Last Updated: 13 Apr 2026 14:33 by ADMIN

Hello,

We would like to request this feature to expand on a Grid components Options.

Provide a built-in way for end-users to redefine or rename a Grid column's title directly through the user interface. Currently, if a user wants to change a column header from "Title1" to "Title2”, developers must write significant custom jQuery to modify the DOM or update the column via set options.

This is a functional request from our users, that we would like to provide for them.

Thanks,
John

Unplanned
Last Updated: 22 Apr 2026 12:52 by ADMIN
Scheduled for 2026 Q2

Bug report

Reproduction of the problem

  1. Open the Dojo linked here - https://dojo.telerik.com/oJOxqTQk
  2. Run the page and inspect the browser console during widget initialization.

Current behavior

Initializing a hidden-by-default Kendo Grid configured with stacked layout throws a JavaScript error during initialization - Uncaught TypeError: Cannot read properties of undefined (reading 'find')

Expected/desired behavior

No errors should be thrown when initializing a hidden stacked layout Grid.

Environment

  • Kendo/Telerik version: 2025.4.1321
  • Browser: [all]
In Development
Last Updated: 09 Jun 2026 08:22 by Karen

Bug report

Reproduction of the problem

We noticed this issue on our client application. It is especially prominent on a slower network connection. We have a batch edit Grid (in cell editing). We clicked Add to create a new row, added data to it, double-clicked the Save Changes button, refreshed the page, and noticed we had 2 new entries instead of just 1 in the grid. We are currently using v2025.4.1111.

To make sure that it was not something isolated to our specific version / setup, I went to the Kendo grid demo site (https://demos.telerik.com/kendo-ui/grid/editing ) to try and reproduce. At the time of writing this ticket, the Kendo site used the latest version available, v2026.2.520.

Current behavior

The following steps reproduce the issue reliably.

  1. Open the DevTools console
  2. Click the Network tab and change the network throttle to be "Fast 4G"
  3. Click Add in the Grid
  4. Type in the cells
  5. Click Save Changes several times rapidly
  6. Observed multiple "Create" network calls in the DevTools Network tab
  7. Refresh the page to see multiple "test567" entries in the Grid

image-20260608-124602.png

TicketID: 1715189

Environment

  • Kendo/Telerik version: Latest
  • jQuery version: All
  • Browser: [all]
Completed
Last Updated: 01 Jul 2026 13:31 by ADMIN
Release 2026 Q3 (July)

Bug report

Reproduction of the problem

  1. Open the Dojo - https://dojo.telerik.com/IbJSAmGX
  2. Try to reorder the rows and place for example row 1 below row 5

Current behavior

No row can be placed below row 5.

Expected/desired behavior

It should be possible to reorder and place a row at last possition

The issue is a regression starting with 2026.1.415

Environment

  • Kendo/Telerik version: 2026.2.520
  • Browser: [all ]
In Development
Last Updated: 23 Jun 2026 14:04 by ADMIN

Bug report

Reproduction of the problem

  1. Open the Dojo - https://dojo.telerik.com/guOqNNgh
  2. Edit a row and save the new value

Current behavior

An error: kendo.grid.js:16278 Uncaught TypeError: Cannot read properties of undefined (reading 'field')

Expected/desired behavior

No error should be thrown. It should be possible to use detailedTemplate along with the stackedLayout

TicketID: 1715859

Environment

  • Kendo/Telerik version: 2026.2.520
  • Browser: [all ]
Completed
Last Updated: 13 May 2024 12:58 by ADMIN
Release 2024 Q2 (May)
Created by: Lee
Comments: 4
Category: Grid
Type: Bug Report
0

I am trying to change the menu option for a column from false to true and others from true to false when a user selects an item from a dropdown. This isn't working. I'm using getOptions(), changing the menu setting in each column, and then setOptions(options) to set it.

Here is a dojo showing an example. In the example, firstName and lastName are initially hidden. I simulate a user choosing last name from some sort of selector (like a dropdown box). The code should then hide both name columns and unhide the lastName column. Instead it hides both name columns.

It seems to have something to do with setting any of the name columns to hidden on initialization. If I remove this from the column settings on initialization though it only works once and when I choose a different option from the dropdown (dropdown is simulated in the dojo so you can't try this but trust me) it breaks.

<html>
<head>
  <meta charset="utf-8">
  <title>Untitled</title>

  <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2022.1.412/styles/kendo.common.min.css">
  <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2022.1.412/styles/kendo.rtl.min.css">
  <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2022.1.412/styles/kendo.default.min.css">
  <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2021.2.511/styles/kendo.mobile.all.min.css">

  <script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
  <script src="https://kendo.cdn.telerik.com/2021.2.511/js/angular.min.js"></script>
  <script src="https://kendo.cdn.telerik.com/2021.2.511/js/jszip.min.js"></script>
  <script src="https://kendo.cdn.telerik.com/2021.2.511/js/kendo.all.min.js"></script></head>
<body>
  <div id="myGrid"></div>
  
  <script>
    let tableRows = [
      {
        ID: 1,
        FirstName: "John",
        LastName: "Smith",
        Age: 21
      },
      {
        ID: 2,
        FirstName: "Jenny",
        LastName: "Jones",
        Age: 18
      },
      {
        ID: 3,
        FirstName: "Greg",
        LastName: "Adams",
        Age: 23
      }
    ];
    
   let tableColumns = [
              {
                title: "Employee ID",
                field: "ID",
                width: 100,
                locked: true,
                menu: false
              },
            {
                title: "First Name",
                field: "FirstName",
                width: 150,
              hidden: true,
              attributes: { "class": "name" },
                
            },
            {
                title: "Last Name",
                field: "LastName",
              hidden: true,
                width: 150,
                attributes: { "class": "name", "data-position": "last name" },
                
            },
            {
                title: "Age",
                field: "Age",
                width: 100
            }
        ];

            var grid = $(`#myGrid`).kendoGrid({
            dataSource: {
                data: tableRows,
                schema: {
                    model: {
                        id: "ID",
                        fields: { ID: {type: "number"}}
                    }
                }
            },
            dataBound: function (e) {
                if (e.sender.dataSource.view().length == 0) {
                    var colspan = e.sender.thead.find("th").length;
                    //insert empty row with colspan equal to the table header th count
                    var emptyRow = "<tr><td colspan='" + colspan + "'></td></tr>";
                    e.sender.tbody.html(emptyRow);
                    e.sender.table.width(800);
                }
     
            },
            columns: tableColumns,
              columnMenu: true,
            sortable: true,
            pageable: false
        }).data("kendoGrid");
    
    let options = grid.getOptions();
    let columns = grid.columns;
    let nameColumns = $(".name");
    let lastNameColumn = $("[data-position='last name']");
    let lockedColumnCount = 0;
    for (var i = 0; i < columns.length; i++) {
        if (columns[i].locked) {
            lockedColumnCount++;
        }
    }
    $.each(nameColumns, function (index, element) {
        let elementIndex = $(element).index() + lockedColumnCount;
        //kendoGrids[tableId].showColumn(elementIndex);
        options.columns[elementIndex].menu = false;
        options.columns[elementIndex].hidden = true;
    });
    
    // Let's pretend Last Name was chosen from a select box part of name to show.
    $.each(lastNameColumn, function (index, element) {
        let elementIndex = $(element).index() + lockedColumnCount;
                        options.columns[elementIndex].menu = true;
                        options.columns[elementIndex].hidden = false;
                        //kendoGrids[tableId].showColumn(elementIndex);
                    });
                    
    console.log(options);
                    
                    grid.options = options;
                    grid.setOptions(options);
    
  </script>
  
</body>
</html>