Pending Review
Last Updated: 02 Mar 2025 19:50 by Garrett
Created by: Garrett
Comments: 0
Category: UI for ASP.NET Core
Type: Bug Report
0

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.

Unplanned
Last Updated: 28 Feb 2025 11:17 by Graeme

### Bug report

When loading a PDF file using the PDFViewer configured for DPL processing, the file content is loaded partially.

### Reproduction of the problem

1) Open the DPL Processing Demo: https://demos.telerik.com/aspnet-core/pdfviewer/dpl-processing

2) The file content is not loaded as expected.

The issue started to occur in version 2025.1.211. When comparing the responses of the "pdfviewer/getinitialpdf?pageNumber=1" request, the response when using the previous version (2024.4.1112) is longer than that of version 2025.1.211.

### Expected/desired behavior

The content of the loaded PDF file must be complete.

### Environment

* **Telerik UI for ASP.NET Core version 2025.1.211
* **Browser: [all]

Planned
Last Updated: 27 Feb 2025 11:15 by ADMIN
Scheduled for 2025 Q3 (Aug)
Created by: Janick
Comments: 2
Category: UI for ASP.NET Core
Type: Feature Request
5

Consider the use of TextWriter async methods for the HTML Helpers, for example the WriteInitializationScript methods.  In certain scenarios the use of the synchronous methods causes an exception: System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.

This can be resolved by explicitly enabling synchronous operations

services.Configure<IISServerOptions>(options =>
    {
        options.AllowSynchronousIO = true;
    });

though synchronous operations have been disabled by default at framework level as of .NET 3.0.

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
In Development
Last Updated: 26 Feb 2025 13:07 by ADMIN
Scheduled for 2025 Q2 (May)

### Bug report

When loading an editor through a partial View using EditorTemplateView(await Html.PartialAsync("PartialViewName")), the following error occurs:

The 'await' operator can only be used within an async lambda expression. Consider marking this lambda expression with the 'async' modifier.

### Reproduction of the problem

@(Html.Kendo().Form<UserViewModel>()
     .Name("myForm")
     .Items(items =>
     {
         items.Add().Field(f => f.Username).EditorTemplateView(await Html.PartialAsync("PartialViewName"));
      })
)

### Expected/desired behavior

The EditorTemplateView() must accept Html.PartialAsync("PartialViewName").

### Environment

* **Telerik UI for ASP.NET Core version: 2024.4.1112
* **Browser: [all]

In Development
Last Updated: 26 Feb 2025 13:06 by ADMIN
Scheduled for 2025 Q2 (May)

### Bug report

The File() option of the Editor's FileBrowser configuration does not provide UrlHandler() option, which is available for the ImageBrowser.

### Reproduction of the problem

1) Define an Editor and enable the FileBrowser feature:

@(Html.Kendo().Editor()
    .Name("Description")
    .Tools(tools => tools
        .Clear()
        .InsertFile()
    )
    .FileBrowser(fileBrowser => fileBrowser
        .File("GetFile", "FileBrowser", new { path = "{0}" })
        .Read("Read", "FileBrowser")
        .Create("Create", "FileBrowser")
        .Destroy("Destroy", "FileBrowser")
        .Upload("Upload", "FileBrowser")
        )
)

2) The File() option sets URL responsible for serving the original file. Try to set it by using a JavaScript handler.

3) The File(x => x.UrlHandler("setURLHandler")) configuration is not available.

### Expected/desired behavior

The UrlHandler() function must be available to set the URL that serves the file using a JavaScript handler.

### Environment

* **Telerik UI for ASP.NET Core version: 2025.1.211
* **Browser: [all]

Unplanned
Last Updated: 26 Feb 2025 07:47 by Mohamed
Created by: Mohamed
Comments: 0
Category: TextBox
Type: Feature Request
1
Email validation for TextBox seems not to include top level domains (like ".com"). It seems to accept emails like "john@doe".

Is it possible to include TLD by default in email validation ?
Unplanned
Last Updated: 25 Feb 2025 23:27 by Mark
Created by: Mark
Comments: 0
Category: Grid
Type: Feature Request
1
I have a grid which uses Batch(true) and ServerOperation(false).

The grid must allow changes to be made in specific cells, without those changes being committed/saved unless the user clicks on the "Save" button in the toolbar. Basically the users enter in some values for editable currency columns that aren't locked, and (without saving) some columns (both locked and not locked) that are not editable must be refreshed as the value in those cells depend on the edited column. Those cells have client templates and client footer templates which need to be used by whatever is refreshing their cells.

Having this functionality provided built-in will be a nice addition:
https://docs.telerik.com/kendo-ui/knowledge-base/grid-update-particular-row-without-refresh

Unplanned
Last Updated: 20 Feb 2025 08:35 by ADMIN

### Bug report

When opening the filter menu of a specified column through the classic ColumnMenu, the filter container is displayed with scrollbars when the dropdown of the filter operator is opened.

### Reproduction of the problem

1) Define a Grid and enable its classic ColumnMenu.

2) Open the filter menu of a specified column and then open the dropdown to select a filter operator.

3) The filter container has scrollbars. The "k-menu-popup" element has "overflow: auto";

Use the following demo to test the case and select the "classic" type for the ColumnMenu: https://demos.telerik.com/kendo-ui/grid/column-menu

The issue does not appear when using version 2024.4.1112.

### Expected/desired behavior

The filter menu container must not change its appearance when the dropdown opens.

### Workaround:

<style>
.k-menu-popup {
    overflow: visible !important;
}
</style>
### Environment

* **Kendo UI version: 2025.1.211
* **jQuery version:  3.7.1
* **Browser: [all]

In Development
Last Updated: 19 Feb 2025 11:23 by ADMIN
Scheduled for 2025 Q2 (May)

### Bug report

When deferring the component scripts to a file and a specified item of a Form HtmlHelper has a defined editor through the Editor() configuration, a client-side error is thrown:

"Uncaught Error: Syntax error, unrecognized expression: #"

### Reproduction of the problem

1) Enable the global deferred initialization.

2) Define a Form HtmlHelper with a ComboBox editor for one of its items:

@model FormViewModel

@(Html.Kendo().Form<FormViewModel>()
    .Name("form")
    .HtmlAttributes(new { action = @Url.Action("SubmitData", "Home"), method = "POST" })
    .FormData(Model)
    .Items(items =>
    {
        items.Add()
            .Field(f => f.Username)
            .Label(l => l.Text("Username:"));

        items.Add()
        .Field(f => f.City)
        .Label(l => l.Text("City"))
        .Editor(editor => editor
          .ComboBox()
          .DataTextField("Text")
          .DataValueField("Value")
          .BindTo(new List<SelectListItem>()
          {
            new SelectListItem() { Text = "City A", Value = "1" },
            new SelectListItem() { Text = "City B", Value = "2" },
            new SelectListItem() { Text = "City C", Value = "3" }
          })
        );
    })
)
@(Html.Kendo().DeferredScriptFile())

3) When the page with the Form is loaded, open the browser console and examine the error.  Review the content of the loaded kendo-deferred-scripts-xxxxx.js file - the ComboBox initialization script is included after the Form initialization script. Attached you can find screenshots.

When using the TagHelper version of the Form, the ComboBox initialization script is included in the kendo-deferred-scripts-xxxxx.js file before the initialization script of the Form with a unique generated "id" for example "3451ce77-2736-437f-9584-f5a5255902c2". In this case, no client-side errors occur.

### Expected/desired behavior

When deferring the component scripts to a file, the Form with specified editors must be initialized as expected without client-side errors.

### Workaround

Use the TagHelper version of the Form or define the editor by using the EditorTemplateView() option:

        items.Add()
        .Field(f => f.City)
        .Label(l => l.Text("City"))
        .EditorTemplateView(Html.Partial("ComboEditor"));

// ~/Views/Shared/ComboEditor.cshtml

@model FormViewModel

@(Html.Kendo().ComboBoxFor(m => m.City)
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>() {
	new SelectListItem() { Text = "City A", Value = "1" },
	new SelectListItem() { Text = "City B", Value = "2" },
	new SelectListItem() { Text = "City C", Value = "3" }
})
)

### Environment

* **Telerik UI for ASP.NET Core version: 2024.4.1112
* **Browser: [ all ]

Completed
Last Updated: 18 Feb 2025 13:06 by ADMIN
Release 2025 Q2 (May)

Bug report

The column format applied through the .Format() option is ignored, if the column is bound to a nullable DateOnly field.

Reproduction of the problem

  1. Declare a nullable DateOnly field in the view model:

public DateOnly? PaymentDate { get; set; }

  1. Bind a column to the field and set its format:

columns.Bound(p => p.PaymentDate).Title("Date").Format("{0:MM/dd/yyyy}").Width(160);

Current behavior

The specified format is ignored, e.g., the Grid shows 2025-01-21, instead of 01/21/2025

Expected/desired behavior

The specified column format is applied.

Environment

  • Kendo UI version: 2024.4.1112
  • Browser: [all ]
Unplanned
Last Updated: 17 Feb 2025 14:19 by ADMIN
I am using a Kendo grid. I am letting the users to export the grid to excel. When they click on Export to excel button, the grid gets automatically saved to Downloads folder. Can you add the feature so that users are presented with a SaveAs box so that end users can save the grid to the desired location on their computer. This is really needed by our company. All of our users are not technically savvy so they dont know where the grid got save automatically.
Unplanned
Last Updated: 13 Feb 2025 13:40 by ADMIN
Created by: jhudson
Comments: 2
Category: Grid
Type: Bug Report
0
Grids that showed fine in 2024.3 now cut off the No Records Available box and show a scroll bar 
Unplanned
Last Updated: 12 Feb 2025 13:07 by Sreeju

### Bug report

When dragging and dropping a file into a specified FileManager folder, the Upload request triggers twice.

### Reproduction of the problem

1. Open the FileManager Demo: https://demos.telerik.com/kendo-ui/filemanager/index

2. Open the browser's Network tab.

3. Drag and drop a file into the FileManager.

4. Two Upload requests are triggered one after another.


### Expected/desired behavior

When uploading a single file with drag & drop, a single Upload request must trigger. When using the default upload button to upload a file, a single request triggers as expected.

### Environment

* **Kendo UI version: 2024.4.1112
* **jQuery version: 3.7.1
* **Browser: [all]

Unplanned
Last Updated: 11 Feb 2025 08:52 by Richard
Created by: Richard
Comments: 0
Category: RadioButton
Type: Feature Request
1
I am trying to validate a required field using a radio button. Everything works as expected when selecting the radio button with the mouse. If I tab to the radio button and arrow to make my selection it triggers a validation error. Even though the arrowing over has made a selection by default. see pic below.

Select the ID textbox and enter the value 1.
Tab to the Radio button by pressing the tab key.
Arrow right or down to change the selection to no.
Radio button triggers the validation error. Even though the option No is selected.

Unplanned
Last Updated: 07 Feb 2025 14:20 by ADMIN
Scheduled for 2025 Q2 (May)
Created by: Alistair
Comments: 0
Category: Wizard
Type: Feature Request
3

Currently, the Content function for Steps in a Wizard only accepts a string value (see API here). 
This means that in order to add a partial view (bound to the current model and its properties), the most straightforward way I could find was to put the partial view (and any wrappers) in its own file and add an extension method "ToHtmlString()". For example:

@model MyModel

@(Html.Kendo().Wizard().Steps(step => {

step.Add().Content(Html.Partial("~/Path/To/View/Wrapper.cshtml", Model).ToHtmlString());

})

using Microsoft.AspNetCore.Html;
using System.IO;

public static class HtmlContentExtensions
{
    public static string ToHtmlString(this IHtmlContent htmlContent)
    {
        if (htmlContent is HtmlString htmlString)
        {
            return htmlString.Value;
        }

        using StringWriter writer = new();
        htmlContent.WriteTo(writer, System.Text.Encodings.Web.HtmlEncoder.Default);
        return writer.ToString();
    }
}
This is not ideal, as it requires the usage of Html.Partial (which displays a warning in the latest versions of .NET 8). It is also awkward as it sometimes means that new view files need to be created for the explicit purpose of being a "wrapper" even though they do not contain much content. And lastly, it also requires an extension method, so it's not immediately easy for other Telerik users to use.

In the Telerik TabStrip, a better approach is possible, as the Content for Items can take in a function which accepts Razor syntax (see API here). For instance:

@model MyModel @(Html.Kendo().TabStrip().Items(tabstrip => { tabstrip.Add()

.Content(@<div id="@Model.TabContainer" class="myTabWrapperClass">

@await Html.PartialAsync("~/Path/To/View.cshtml", Model)

</div>); })

In this case, we can use Html.PartialAsync (avoiding .NET 8 warnings), we don't need an extension method, and it is easy to add any required "wrapping" such as a div with an ID, without needing a whole separate view.

If we had the option to use the same approach with Wizard Steps, that would be ideal!

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.

Unplanned
Last Updated: 06 Feb 2025 07:11 by Manu
After closing the popup window by clicking the Update or Cancel button, the grid should automatically select the previously viewed row and adjust the vertical scroll position to keep it within the visible area.
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.

Completed
Last Updated: 31 Jan 2025 09:15 by ADMIN
Release 2025 Q1 (Feb)

### Bug report

When the Grid filter menu is customized with a DropDownList, the initial option defined by using the "index" property is not set.

### Reproduction of the problem

A Dojo sample for reproduction: https://dojo.telerik.com/OmeXUfaF


### Expected/desired behavior

The DropDownList should be initialized with an initially selected option.


### Environment

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

1 2 3 4 5 6