Declined
Last Updated: 02 Oct 2026 18:07 by ADMIN
Created by: Rex Chan
Comments: 1
Category: UI for ASP.NET Core
Type: Feature Request
0
Any plan changing asp.net core jquery wrapper to htmx ?
Declined
Last Updated: 03 Sep 2026 08:19 by ADMIN
Built-in Grid UI for state persistence with multi-layout management

Add first-class Save/Load layout tools to the Grid toolbar that persist and restore Grid state without custom wiring. The default provider should use localStorage, with an extensibility point to plug in server storage. Users should be able to:
- Save multiple named layouts (columns/order/visibility, sorting, filtering, grouping, paging, search panel state).
- Open a built-in popup to manage layouts (save as, rename, delete, set default) and load a selected layout.
- Choose storage scope per layout (local vs. server) with a simple toggle; the server provider API can be implemented by the app.

Behavior and scope
- Persist and restore via an internal provider abstraction; ship a default localStorage provider and document a server provider interface.
- Support full or partial restores; allow picking which parts to include (for example, only columns/layout vs. full DataSource state) to align with existing guidance on selectively applying options through `setOptions({ ... })` and DataSource APIs like `dataSource.filter(...)` [1] [2] [3] [4].
- Avoid double reads and support automatic persistence flows similar to the documented beforeunload/ready pattern; native implementation should mirror the current best-practice approach that saves on leave and restores on load, with an option to disable automatic behavior when using explicit Save/Load actions [2] [5].
- Respect known constraints for SignalR binding by restoring layout via `setOptions({ columns, ... })` and reapplying data state via DataSource methods to keep the hub connection intact; provide an out-of-the-box “SignalR-safe” mode that applies filters/sort/page through DataSource APIs [1] [3] [4].
- Include search box value persistence and ensure multi-check filter lists load their full option sets when state is restored, consistent with existing recommendations to persist search input and configure filter DataSources [6].

Developer experience
- New built-in toolbar tools: “Save Layout,” “Load Layout,” and “Manage Layouts…”, plus a public API to trigger the same actions programmatically [7] [8].
- Config options to:
  - Enable the feature and set a default storage provider (local or custom).
  - Define which state segments to include (columns, sorting, filtering, grouping, paging, search).
  - Provide hooks/events for pre-save, post-save, pre-load, post-load to modify payloads or enforce policies.
- A documented provider interface for custom storage so apps can store/retrieve named layouts from a server.

Rationale
- State persistence is officially supported via `getOptions()`/`setOptions()` and is commonly implemented with localStorage and beforeunload/ready flows, but requires custom buttons and wiring today [2] [5].
- Partial restore and DataSource API reapplication are established practices to handle limitations such as SignalR-bound grids where full `setOptions()` is not viable; the feature should codify these patterns into a turnkey, user-facing experience [1] [3] [4].
- Developers frequently need to persist search input and ensure multi-check filter option lists are correct after restore; including these in first-party behavior reduces extra glue code [6].

Requested deliverables
- Built-in toolbar Save/Load/Manage UI with a popup for multiple named layouts and defaults.
- Default localStorage provider; extensible provider model for server storage.
- Options to scope which state is saved/restored and a SignalR-safe mode.
- Public API and events for integration and policy control.
- Docs and demos covering automatic and manual flows, local vs. server storage, and SignalR scenarios.

[1] [3] [4] [2] [5] [6] [7] [8]

[1]: https://www.telerik.com/forums/localstorage-persistence-not-working-with-kendo-grid
[2]: https://www.telerik.com/aspnet-core-ui/documentation/knowledge-base/grid-automatically-persist-state
[3]: https://www.telerik.com/forums/localstorage-persistence-not-working-with-kendo-grid
[4]: https://www.telerik.com/forums/localstorage-persistence-not-working-with-kendo-grid
[5]: https://www.telerik.com/aspnet-core-ui/documentation/knowledge-base/grid-automatically-persist-state
[6]: https://www.telerik.com/forums/grid-state-persistance-with-column-filters-or-search-bar
[7]: https://www.telerik.com/aspnet-core-ui/documentation/html-helpers/data-management/grid/overview
[8]: https://www.telerik.com/aspnet-core-ui/documentation/html-helpers/data-management/grid/toolbar
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.
Declined
Last Updated: 25 Sep 2026 13:21 by ADMIN
Created by: Garrett
Comments: 5
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.

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.
Declined
Last Updated: 24 Sep 2026 12:55 by ADMIN
Created by: Hubert Frick
Comments: 1
Category: UI for ASP.NET Core
Type: Bug Report
1

Bug report
For the Telerik Scheduler Timeline View, since the update from somewhere in between version 2022.3.1109 to 2024.2.154, a custom timeline view cannot be selected if the view name has dot(s) in its name (e.g. "kendo.ui.customTimelineView").

Reproduction of the problem

Add a custom Timeline View by extending the kendo.ui.TimelineView

Current behavior

Unlike older versions (I know that it worked with version <= 2022.3.1109, but don't know when exactly it was introduced)  now the ui blocks, when the custom select view button is clicked. Specifically, the problem is in kendo.scheduler.js at line 4554:

var viewElementToSelect = that.toolbar.find("[" + kendo.attr("name") + "=" + name + "]");

Expected behavior

In this code line, the find method does not work when the variable "name" contains something like "kendo.ui.CustomTimelineView". As a solution, I suggest escaping the name beforehand:

var nameEscaped = $.escapeSelector(name);
var viewElementToSelect = that.toolbar.find("[" + kendo.attr("name") + "=" + nameEscaped + "]");
With that or a similar solution , my custom Timeline View can be selected as before.
Declined
Last Updated: 11 May 2023 15:16 by David

As per the subject, if you use jQuery to get a Kendo TabStrip in a ComboBox change event it inserts this div into the TabStrip control:

<div class="k-tabstrip-items-wrapper k-hstack">
    <ul class="k-tabstrip-items k-reset" role="tablist"></ul>
</div>

This used to work as we were changing the selected tab in a TabStrip based on a ComboBox selection, but this no longer works. Please see the following REPL where a new div is added every time you change the ComboBox value:

https://netcorerepl.telerik.com/mxETafaT24zWOe0C50

Kind regards,

David

 

Declined
Last Updated: 25 Sep 2026 10:42 by ADMIN
Created by: Dan
Comments: 2
Category: UI for ASP.NET Core
Type: Bug Report
1

In the ThemeBuilder the controls do not use the latest version.

For instance while playing around with the ThemeBuilder I noticed that the primary button does not look primary like on the demos page.

Also it would be helpful to provide a page where you explain where every color is used.

Declined
Last Updated: 12 Jul 2024 06:38 by ADMIN
Created by: Akesh Gupta
Comments: 0
Category: UI for ASP.NET Core
Type: Feature Request
1

Currently, the ToCamelCase() method lowers only the first letter, as per the example below:

image

Is it possible to create another overload of the ToCamelCase() method that transforms the string to "randomStatusId"?

Declined
Last Updated: 02 Feb 2023 11:45 by ADMIN

Dear Telerik

The feature is related to https://www.telerik.com/account/support-center/view-ticket/1594775 this thread.

It is related to a product environment.

Scenario:

  1. Save grid options in persistent storage (i.e. DB).
  2. Grid operates successfully and return visits operate well with stored options being loaded with the grid.
  3. Then the grid column structure or some other feature is amended during a maintenance and development request - the feature setting is contained within the stored options which are loaded with the grid. The grid functions without some of the changes because the options override the changes.
  4. Behavior is unwanted so we would have to merge the new options and the old options.

Request:

Please can Telerik create functionality along the lines of:

$("#SomeGrid").data("kendoGrid").setOptions($("#SomeGrid").data("kendoGrid").mergeOptions(OptionsSaved, OptionsNew));

KR

David

Declined
Last Updated: 25 Mar 2024 13:14 by ADMIN
Created by: George
Comments: 1
Category: UI for ASP.NET Core
Type: Bug Report
0

Hi this is a pretty basic bug. But I am using the k-i-cancel icon class but for some reason it is showing the settings icon?

 

Declined
Last Updated: 03 Aug 2022 05:30 by ADMIN
Dear Support,

I appreciate if there is an example on how to export the images to excel from the grid.

Note : The images display in the grid are from the Azure Cloud storage.
Declined
Last Updated: 31 May 2022 14:23 by Marianne
Created by: Marianne
Comments: 4
Category: UI for ASP.NET Core
Type: Feature Request
0

It would be useful to have a grid operator for "IN" conditions. Right now we only have 2 options for an OR without having to use a custom filtering and custom clearing functions.

We have a lot of data that needs to be filtered that is not sequential.  For example purposes:

Given that a customer has a standing purchase order for parts over time.

Given that serial numbers on said parts will not be sequential and may not be even be similar enough for wildcards (if that feature is provided.)

Given that we need to filter grid data to retrieve customer number, purchase order and a set of serial numbers, we need the equivalent of:

SELECT * FROM testdatatable WHERE customer = '#####' AND purchaseorder = '#####' AND serialnumber IN ('abciqwe', 'cid235', 'sn34087', 'hpk2679');

which would be WHERE WHERE customer = '#####' AND purchaseorder = '#####' AND (serialnumber  = 'abciqwe' OR serialnumber =  'cid235' OR serialnumber = 'sn34087' OR serialnumber 'hpk2679');

So basically I would like to have the ability to have multiple OR statements and the operand could be 'contains' or 'not contains' as that would probably work better than "equal".

Declined
Last Updated: 03 Mar 2022 09:43 by ADMIN

Our immediate need is for the MaskedTextBox.

 

And have modified my program.cs to add:

 

// Add services to the container.

builder.Services.AddControllersWithViews()

                // Maintain property names during serialization. See:

                // https://github.com/aspnet/Announcements/issues/194

                .AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver());

// Add Kendo UI services to the services container"

builder.Services.AddKendo();

 

 

I copied the code from your demo into the ASP.net 6.0 Page above.

 

I added data properties to the Index.cshtml.cs model and changed the Value property on each Kendo object to point them. That works fine

 

 

The issue is that the formatting is not applied:

 

 

Declined
Last Updated: 01 Feb 2022 12:38 by Cypher

Steps to reproduce

  1. Execute the code below
  2. Enter some values in the Html and Kendo inputs
  3. Hit the browser's back button
  4. Hit the browser's forward button to redisplay the page

Current Behavior

The value in the Html Input is restored but not the value of the Kendo Input. The same behavior applies for Kendo NumericTextBox, etc.

 

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2021.3.1207/styles/kendo.bootstrap-v4.min.css" />
    <script src="https://kendo.cdn.telerik.com/2021.3.1207/js/jquery.min.js"></script>
    <script src="https://kendo.cdn.telerik.com/2021.3.1207/js/kendo.all.min.js"></script>
    <script src="https://kendo.cdn.telerik.com/2021.3.1207/js/kendo.aspnetmvc.min.js"></script>
  </head>
  <body>
    <form>
 
      <div>
        <label for="HtmlInput">Html Input</label>
        <input type="text" id="HtmlInput" name="HtmlInput">
      </div>
 
      <div>
        <label for="KendoInput">Kendo Input</label>
        @(Html.Kendo().TextBox ().Name ("KendoInput"))
      </div>
 
    </form>
  </body>
</html>

Declined
Last Updated: 16 Dec 2021 11:47 by ADMIN

### Bug report

The Button TagHelper is missing in the Visual Studio 2022 IntelliSense. 

### Reproduction of the problem

Create a Telerik UI for ASP.NET Core application (.NET 6) and try to insert a Button TagHelper by using the IntelliSense. It appears that not all available Telerik UI components are available in the suggested list.

### Environment

* **Visual Studio Professional 2022 version: 17.1.0 Preview 1.1

* **Kendo UI version: 2021.3.1109
* **jQuery version: 1.12.4
* **Browser: [all]

Declined
Last Updated: 01 Feb 2022 14:45 by ADMIN
  • ArgumentOutOfRangeException: Index and length must refer to a location within the string. (Parameter 'length')

    • string.Substring(int startIndex, int length)

    • Kendo.Mvc.Rendering.KendoHtmlGenerator.SanitizeId(string id)

    • Kendo.Mvc.UI.WidgetBase.get_Id()

    • Kendo.Mvc.UI.WidgetBase.RenderTrialMessage(TextWriter writer)

    • Kendo.Mvc.UI.WidgetBase.RenderHtml(TextWriter writer)

    • Kendo.Mvc.UI.WidgetBase.ToHtmlString()

    • Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>.ToHtmlString()

    • Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>.WriteTo(TextWriter writer, HtmlEncoder encoder)

    • Microsoft.AspNetCore.Mvc.ViewFeatures.Buffers.ViewBuffer.WriteToAsync(TextWriter writer, HtmlEncoder encoder)

    • Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderLayoutAsync(ViewContext context, ViewBufferTextWriter bodyWriter)

    • Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderLayoutAsync(ViewContext context, ViewBufferTextWriter bodyWriter)

    • Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)

    • Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable<int> statusCode)

    • Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable<int> statusCode)

    • Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, string contentType, Nullable<int> statusCode)

    • Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)

    • Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeResultAsync>g__Logged|22_0(ResourceInvoker invoker, IActionResult result)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0<TFilter, TFilterAsync>(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext<TFilter, TFilterAsync>(ref State next, ref Scope scope, ref object state, ref bool isCompleted)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeResultFilters>g__Awaited|28_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)

    • Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)

    • Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)

    • Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)

    • Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Declined
Last Updated: 25 Mar 2024 13:14 by ADMIN
Created by: Yovko
Comments: 5
Category: UI for ASP.NET Core
Type: Bug Report
0

 

I have an editable kendo grid in which I have a date field. When I choose a date through the calendar for example: 26.12.2021 on post the model binder parses the date correctly.

If I manually enter the date in the cell the model binder parses the date as it was not an UTC and since my time zone is +2h it comes in the controller as 25.12.2021 22:00

(see the attached files)

 

Inside my startup.cs I have defined JsonOptions like this:

.AddNewtonsoftJson(options =>
                {
                    options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                    options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                });

 

In the Configure method:

var supportedCultures = new[] { new CultureInfo("bg-BG") };

app.UseRequestLocalization(new RequestLocalizationOptions
{
         DefaultRequestCulture = new RequestCulture("bg-BG"),
         SupportedCultures = supportedCultures,
         SupportedUICultures = supportedCultures
});

Layout.cshtml

<script src="~/lib/kendo/js/cultures/kendo.culture.bg-BG.min.js"></script>

<script>
        kendo.culture("bg-BG");
</script>

Declined
Last Updated: 01 Feb 2022 14:47 by ADMIN
Created by: A
Comments: 2
Category: UI for ASP.NET Core
Type: Bug Report
0

Kendo dialog structure doesn’t use Aria landmarks properly for buttons  - this leads to a validation error

The pager control's select box renders role="listitem" but the parent is missing role="list"  - this leads to a validation error

Listviews will render role="list" even when empty - this leads to a validation error

Kendo grids use 2 tables (one for header and one for the data) which means that there are no role="cell" assigned to any of the headers  - this leads to a validation error

Scrollable grids are missing a tabindex="0" to allow for keyboard navigation - this leads to a validation error

 

this form doesn't have Core 2, 2.1, 3.0, 3.1 or 5 in the .Net Framework drop down. Just gonna pick 4.8 even though it doesn't apply. I am using core 5.

1 2