Completed
Last Updated: 07 Oct 2025 08:41 by ADMIN

Bug report

Editor components throw AmbiguousMatchException when bound with models that have property shadowing in inheritance hierarchies.

Reproduction of the problem

  1. Create a model hierarchy where a derived class shadows a base class property with new keyword
  2. Bind the Editor component with the shadowed property
  3. Exception is thrown during reflection

Current behavior

(optional)
The components should handle property shadowing gracefully and generate the appropriate HTML input element.

Expected/desired behavior

AmbiguousMatchException is thrown when trying to bind the component to the shadowed property.

TicketID:

1699473

Environment

  • Kendo UI version: 2025.3.825
  • Browser: [all]
Need More Info
Last Updated: 06 Oct 2025 18:21 by ADMIN

I am working on a grid that has 3 requirements that seem to cause the bug:

  • A FK column must have its lookup values loaded remotely
  • The grid has sticky columns
  • The grid is loaded inside a tab strip control

The combination of these 3 factors causes the grid not to load and results in a devtools console error. It's worth noting that removing any of the 3 bullet points above (e.g. NOT using sticky columns, NOT loading grid in tab control, or NOT have a remote FK column) allows the grid to load properly.

The error thrown in the DevTools console indicates that the grid's "tbody" property is not created at the time it is trying to call _setStickyStyles.

Before error is thrown (mouse is hovering over "tbody" property):

 

After error is thrown (look at console output):

 

I have upload a zip file containing a sample project that demonstrates the issue. When you launch the sample application, there are 2 links at the top of the page, "No Tabs" and "Tabs". The issue is reproducible on the "Tabs" page. Both pages use the same grid partial, but the "Tabs" page loads the partial through the tabstrip with a controller action. The "Tabs" page includes the 3 bullet points I indicated above that cause the problem.

The workaround I am using for now in my application is to NOT set the columns as sticky in my partial view. Instead, I set the sticky columns using the grid's API method "stickColumn" (https://www.telerik.com/kendo-jquery-ui/documentation/api/javascript/ui/grid/methods/stickcolumn) during the grid's dataBinding event (to ensure sticky columns are set AFTER grid initialization). This allows the grid to load and sets the sticky columns appropriately.

Thank you!

Unplanned
Last Updated: 19 Aug 2025 08:38 by Hien
Created by: Hien
Comments: 0
Category: UI for ASP.NET Core
Type: Feature Request
0
Is it possible to implement the Top Navbar navigational element in the Telerik UI for ASP.NET Core suite?
Completed
Last Updated: 25 Aug 2025 13:30 by ADMIN
Release 2025 Q4 (Nov)
Created by: Kheng Aik
Comments: 0
Category: UI for ASP.NET Core
Type: Bug Report
0

### Bug report

When building the scripts with NPM, there is syntax error "Unexpected number":


### Reproduction of the problem

Build the scripts (version 2025.3.812).

### Expected/desired behavior

The scripts must be built successfully.

### Workaround:

Remove the extra single quotes that wrap the version in the "rollup.mjs.config.mjs" and "rollup.modules.config.js" files:

  • rollup.mjs.config.mjs
import glob from 'glob';
import path from 'path';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import polyfill from 'rollup-plugin-polyfill';
import alias from '@rollup/plugin-alias';

...

const version = '2025.3.812';
  • rollup.modules.config.mjs
import glob from "glob";
import path from "path";
import { nodeResolve } from "@rollup/plugin-node-resolve";
import polyfill from "rollup-plugin-polyfill";
import alias from "@rollup/plugin-alias";

...

const version = '2025.3.812';

### Environment

* **Kendo UI version: 2025.3.812

Unplanned
Last Updated: 07 Aug 2025 15:17 by ADMIN
Created by: Tommy
Comments: 0
Category: UI for ASP.NET Core
Type: Feature Request
1
I have been using the Query Builder now available in the web report designer and I wonder if you would consider making it available as a stand along component?
Maybe adding it to the Kendo UI .Net Core offering would at least entice us to sign up for that too!
Declined
Last Updated: 19 Jun 2025 20:56 by ADMIN
Created by: JG
Comments: 1
Category: UI for ASP.NET Core
Type: Feature Request
2

Currently, when dynamically appending menu items using the append() method, there is no built-in support to specify an icon via an icon, iconClass, or similar property — unlike other Kendo UI components such as kendo.ui.Button, which allow this directly.

To include an icon today, we must use inline HTML within the text property and set encoded: false, like so:

menu.append({
    text: '<span class="k-icon k-i-plus"></span> Add Item',
    encoded: false
});

While this workaround functions, it's not as clean or consistent as using a dedicated iconClass or icon option.

Please consider adding official support for an iconClass, icon, or similar property when using append() with kendo.ui.Menu, aligning it with how other Kendo components handle icons.

This would:

  • Improve API consistency across Kendo components.
  • Simplify code for dynamic menu updates.
  • Eliminate reliance on raw HTML and manual encoding flags.
Completed
Last Updated: 03 Jul 2025 15:26 by ADMIN
Release 2025 Q3 (Aug)

As stated in the title, the Save() action of a grid (with pagination, not endless scroll) does set the scroll position to the top instead of persisting it. 

I tried to follow instructions from https://www.telerik.com/aspnet-core-ui/documentation/html-helpers/data-management/grid/scrolling/overview#restoring-the-scroll-position but without success. The scroll position is moved to the top after the DataBound event handler.

Unplanned
Last Updated: 16 May 2025 20:40 by Akesh Gupta
Created by: Akesh Gupta
Comments: 0
Category: UI for ASP.NET Core
Type: Feature Request
1

Hi Team,

I would like to request to add an Html/Tag Helper for the kendo.ui.icon.  

Thanks!

Unplanned
Last Updated: 19 Mar 2025 09:39 by ADMIN

I'm using an OData datasource to populate the grid.  To make matters worse, the Autocomplete retrieves data for *all* of the grid columns.  I'd say the default behavior should only retrieve the current column's data and preferably use OData groupby to limit the results to distinct values.

Interestingly, the CheckBoxList filter *is* populated from the current grid data, behaving as expected.  

My page is attached and the issue is occurring in the detail grid where Server Filtering is disabled.

Completed
Last Updated: 17 Mar 2025 17:38 by ADMIN
Created by: SturmA
Comments: 2
Category: UI for ASP.NET Core
Type: Feature Request
1

Hi Team,

Currently, Telerik.Licensing NuGet package only has target for netstandard2.0, netframework462 and net6.0. I cannot use .NET 6 for my .NET 9 application because .NET 6 is out of support. 

This is a feature request to either

  • Remove the net6.0 TFM and reply only on netstandard2.0
    • or
  • Add net8.0 and net9.0 targets.

Thank you,

Arthur

Unplanned
Last Updated: 18 Mar 2025 08:50 by ADMIN
Created by: Garrett
Comments: 4
Category: UI for ASP.NET Core
Type: Bug Report
1

I am seeing that once a grid checkboxlist column filter exceeds about 1000 items the wait time appears to increase non-linearly (performance is worse than linear.)  For example, with 3,000 items the page freezes for about 30 seconds.  The data is fetched in under 50 milliseconds, so the vast majority of this time appears to be processing by Kendo.

Please see the attached for my configuration.

Completed
Last Updated: 26 Feb 2025 17:53 by ADMIN
Release 2025 Q2 (May)
Created by: erwin
Comments: 0
Category: UI for ASP.NET Core
Type: Bug Report
1

Bug report

When enabling Editing for the Grid or TreeList a "No License" overlay is displayed in the following scenarios:

Reproduction of the problem

  • Grid: overlay is displayed on load
@(Html.Kendo().Grid<TelerikMvcApp13.Models.OrderViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.OrderID).Filterable(false);
        columns.Bound(p => p.Freight);
        columns.Bound(p => p.OrderDate).Format("{0:MM/dd/yyyy}");
        columns.Bound(p => p.ShipName);
        columns.Bound(p => p.ShipCity);
        columns.Command(c => c.Edit());
    })
    .Editable(e=>e.Mode(GridEditMode.PopUp))
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(20)
        .Model(m=>m.Id(o=>o.OrderID))
        .Read(read => read.Action("Orders_Read", "Grid"))
        .Update(read => read.Action("Orders_Update", "Grid"))
        .Create(read => read.Action("Orders_Create", "Grid"))
        .Destroy(read => read.Action("Orders_Destroy", "Grid"))
    )
)
  • TreeList: initially there is no overlay. Clicking on "Edit" button shows overlay and "No License" popup.
@(Html.Kendo().TreeList<Kendo.Mvc.Examples.Models.TreeList.EmployeeDirectoryModelPopUp>()
    .Name("treelist")
    .Toolbar(toolbar => toolbar.Create())
    .Columns(columns =>
    {
        columns.Add().Field(e => e.FirstName).Width(220).Title("First Name");
        columns.Add().Field(e => e.LastName).Width(100).Title("Last Name");
        columns.Add().Field(e => e.Position);
        columns.Add().Field(e => e.HireDate).Format("{0:MMMM d, yyyy}");
        columns.Add().Field(e => e.Phone).Width(200);
        columns.Add().Field(e => e.Extension).Width(140).Title("Ext").Format("{0:#}");
        columns.Add().Width(300).Command(c =>
        {
            c.CreateChild().Text("Add child");
            c.Edit();
            c.Destroy();
        });
    })
    .Editable(e => e.Mode("popup"))
    .DataSource(dataSource => dataSource
        .Create(create => create.Action("Create", "EmployeeDirectory"))
        .Read(read => read.Action("All", "EmployeeDirectory"))
        .Update(update => update.Action("Update", "EmployeeDirectory"))
        .Destroy(delete => delete.Action("Destroy", "EmployeeDirectory"))
        .Model(m =>
        {
            m.Id(f => f.EmployeeId);
            m.ParentId(f => f.ReportsTo);
            m.Expanded(true);
            m.Field(f => f.FirstName);
            m.Field(f => f.LastName);
            m.Field(f => f.ReportsTo);
            m.Field(f => f.HireDate);
            m.Field(f => f.Extension).DefaultValue(0);
            m.Field(f => f.Position);
        })
    )
    .Height(540)
)

Expected/desired behavior

No overlay and popup should be displayed in case of valid license.

TicketID:

(optional)
Provide the TicketID, where the bug report initiated.

Environment

  • Kendo UI version: 2025.1.211
Unplanned
Last Updated: 07 Feb 2025 10:37 by Korstiaan

Serializing DataSourceResult when it contains several groups is significantly slower compared to serializing the object when no grouping is used. Consider ways to improve the performance. For more context and an example, see Ticket ID: 1677867.

Declined
Last Updated: 04 Feb 2025 08:01 by ADMIN

In this screenshot, End Date and Subm Is Open are "nested" properties, and Prod Date and Is LatestVersion are *not* nested.  The row filter functionality is not displaying the correct row filter widget.

Here's a data sample:

{

            "SubmissionVersionId": 1020,

            "ReleaseId": 2008,

            "SubmissionVersionNumber": 6,

            "IsLatestVersion": true,

            "SetId": "E2410-1f",

            "EioSubmissionId": null,

            "SubmissionName": null,

            "RequestDate": null,

            "SubmissionDate": null,

            "WitsDate": null,

            "ProdDate": null,

            "OnHoldReason": null,

            "IsSubmitted": true,

            "Created": "2024-12-20T14:39:51-08:00",

            "RowVersion": "AAAAAAAAn28=",

            "Release": {

                "ReleaseId": 2008,

                "UnversionedSetId": "E2410-1",

                "StatusId": 1,

                "ReleaseTypeId": 1,

                "ReleasePriorityId": 3,

                "EncDate": "2025-01-08",

                "KphcSuite": null,

                "SnowReq": null,

                "SnowRitm": null,

                "Created": "2024-12-17T11:20:02-08:00",

                "ReleasePriority": {

                    "ReleasePriorityId": 3,

                    "ReleasePriorityName": "Routine",

                    "ReleasePriorityAbbreviation": "ROU"

                },

                "ReleaseType": {

                    "ReleaseTypeId": 1,

                    "ReleaseTypeName": "New"

                },

                "Status": {

                    "ReleaseStatusId": 1,

                    "ReleaseStatusName": "In Progress",

                    "IsOpen": true

                }

            }

        }

 

Here is the schema definition.

 

        .Schema(s => {
            s.Model(model =>
            {
                model.Id(p => p.SubmissionVersionId);
                model.Field(p => p.SubmissionVersionId).Editable(false);
                model.Field(p => p.ReleaseId).Editable(false);
                model.Field(p => p.SubmissionVersionNumber).Editable(false);
                model.Field(p => p.IsLatestVersion).Editable(false);
                model.Field(p => p.EioSubmissionId).Editable(false);
                model.Field(p => p.SubmissionName);
                model.Field(nameof(SubmissionVersion.RequestDate), typeof(DateOnly)).DefaultValue(null);
                model.Field(nameof(SubmissionVersion.SubmissionDate), typeof(DateOnly)).DefaultValue(null);
                model.Field(nameof(SubmissionVersion.WitsDate), typeof(DateOnly)).DefaultValue(null);
                model.Field(nameof(SubmissionVersion.ProdDate), typeof(DateOnly)).DefaultValue(null);
                model.Field(nameof(SubmissionVersion.IsSubmitted), typeof(bool)).DefaultValue(false);
                // Release fields
                model.Field(nameof(Release.UnversionedSetId), typeof(string)).Editable(false);
                model.Field(nameof(Release.EncDate), typeof(DateOnly));
                model.Field(nameof(Release.SnowReq), typeof(string));
                model.Field(nameof(Release.KphcSuite), typeof(string));
                model.Field(nameof(Release.SnowRitm), typeof(string));
                // ReleaseStatus fields
                model.Field(nameof(ReleaseStatus.IsOpen), typeof(bool)).Editable(false);
            });
        })

I've attached the full cshtml file.

Declined
Last Updated: 27 Jan 2025 17:54 by ADMIN
I am using the Kendo UI Upload Control and wanted to allow for multiple files in synchronous mode, but when adding multiple files at the same time, they are grouped together in the same line item. Is there a way to have each separate file as its own line item and remove item individually if we upload multiple files together? Currently while uploading multiple files and removing a single one is not supporting in synchronous mode.
Pending Review
Last Updated: 15 Jan 2025 13:46 by Ak

The current demo is showing  a contains predicate. To enhance the current application, I am requesting the feature to use a starts with predicate to meet a practical business need. 

The minimum length property will need to changed to 1 to limit the number of characters to be typed.

 

Unplanned
Last Updated: 14 Jan 2025 09:54 by ADMIN
Created by: Federico
Comments: 5
Category: UI for ASP.NET Core
Type: Feature Request
0

It would be nice to extend dialog like office 365 right dialog ( docked to the right).

It would be nice to have a dropdown button with a container

Unplanned
Last Updated: 03 Jan 2025 08:31 by ADMIN
Created by: ERCANPOLAT
Comments: 0
Category: UI for ASP.NET Core
Type: Feature Request
2

In the example below products is actually DbSet<Product>

public async Task<ActionResult> Products_Read([DataSourceRequest]DataSourceRequest request)
{
    using (var northwind = new SampleEntities())
    {
        IQueryable<Product> products = northwind.Products;
        DataSourceResult result = await products.ToDataSourceResultAsync(request);
        return Json(result);
    }
}

Under the hood the ToDataSourceResultAsync call is executed inside Task.Run

And that Task.Run is calling sync methods of IQueryable which means EntityframeworkCore queries are not taking place with async I/O

Unplanned
Last Updated: 28 Nov 2024 13:35 by ADMIN
Created by: Steve
Comments: 1
Category: UI for ASP.NET Core
Type: Feature Request
1

Whilst I'm aware that I can create a HTML label and add the k-label class. I feel that a Label and a LabelFor are essential parts of the toolkit to prevent brittle code getting created when/if the labels that are created within the toolkit have other requirements

I have created my own implementation for now but I think this should be added to your roadmap, especially as it's such a simple thing to do

Unplanned
Last Updated: 26 Nov 2024 07:30 by ADMIN
Created by: Khaled Salman
Comments: 3
Category: UI for ASP.NET Core
Type: Feature Request
1
*** Support ticket created by Telerik by Progress staff ***
*** Please follow-up with additional details, if necessary. Thank you. ***

There is currently no built-in feature to dynamically disable pagination when the number of grid rows is fewer than the defined page size. I need a way to automatically disable pagination when the number of records is less than or equal to the page size for a smoother user experience. Fig: 1(a)



In the above image, After filtering the data, despite current records are less than the page size but pagination is still appearing.
1 2 3 4 5 6