The Core Grid throws an exception when setting its toolbar template through the ClientTemplateId option. The issue is a regression introduced in version 2025.2.520.
.ToolBar(toolbar => {
toolbar.ClientTemplateId("myTemplate");
})
An exception is thrown:
NullReferenceException: Object reference not set to an instance of an object
The configuration works without throwing exceptions.
Use the alternative way of setting the toolbar template, on the Grid's root level:
@(Html.Kendo().Grid <MyModel>()
.Name("grid")
.ToolBarClientTemplateId("myTemplate")
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.
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();
}
}
@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>);
})
Expose additional API configurations for the Grid's ToolBar
As of recent releases, the Kendo UI Grid Toolbar has been substituted with the Kendo UI Toolbar. This change allows users to add the majority ToolBar.items API options apart from the built-in tools.
As noted within the Kendo UI for jQuery API documentation for the Grid's Toolbar:
"Apart from the built-in tools, the Grid fully exposes the ToolBar.items API. This way you can specify any custom tools in the widget using the components available in the ToolBar itself."
The inherited ToolBar.items API options are not available for the server-side Telerik UI Grid for ASP.NET Core and MVC wrappers as well.
It would be beneficial to the customers if the inherited ToolBar.items API options are available for the server-side Telerik UI Grid for ASP.NET Core and MVC wrappers as well.
Expose the sorts TagHelper for the Grid's column filter datasource taghelper
Currently, the Grid's Column Filter Datasource Taghelper exposes the following inner child TagHelpers.
Unlike its HtmlHelper counterpart which happens to expose the .Sort()
API configuration. For example:
.Columns(columns =>
{
columns.Bound(p => p.ShipName).Filterable(ftb =>
{
ftb.Multi(true);
ftb.Search(true);
ftb.CheckAll(true);
ftb.DataSource(dataSource => dataSource
.Custom()
...
.Sort(sort =>
{
sort.Add("ShipName").Ascending();
})
);
});
})
.Items(items => { items.Add() .Field(f => f.Type) .Label(l => l.Text("Type:")) .Editor(e => { e.Upload() } }
The Kendo UI for jQuery TreeList provides options for configuring the settings of the Window when using Popup editing mode:
Currently, the Window options are not available for the HtmlHelper and TagHelper TreeList. Is it possible to implement the Window() configuration of the Editable() option, as per the example below?
.Editable(e => { e.Mode("popup"); e.Window(w => w.AppendTo("..").Animation(false).Draggable(false).Title("...")); })
### Bug report
When using the sort" and "filter" toolbar commands, the "sort" and "filter" events do not trigger.
### Reproduction of the problem
A Dojo sample for reporduction: https://dojo.telerik.com/ySEQTSSS
### Expected/desired behavior
The "sort" and "filter" events must trigger when sorting and filterng the columsn through the respective toolbar commands.
### Environment
* **Kendo UI version: 2025.2.520
* **jQuery version: 3.7.1
* **Browser: [all]
### Bug report
The "Clear Sorting" and "Clear all filters" labels cannot be localized when using the "sort" and "filter" toolbar commands.
### Reproduction of the problem
A Dojo sample for reporduction: https://dojo.telerik.com/JHJGUaSH
### Expected/desired behavior
The "Clear Sorting" and "Clear all filters" messages should be exposed for localization.
### Environment
* **Kendo UI version: 2025.2.520
* **jQuery version: 3.7.1
* **Browser: [all]
Hi Team,
I noticed there is an Azure Blob Storage example with the UI for ASP.NET Core Upload, but there is not an example with Chunk Upload. I would like to request an example be provided in your documentation.
Thank you!
Hi Team,
I would like to request to add an Html/Tag Helper for the kendo.ui.icon.
Thanks!
Currently, when exporting a file from the Spreadsheet that contains named ranges, which refer to invalid or missing references (e.g., "#REF!"), the exported file is corrupted when attempting to open it in Excel:
Is it possible to remove any invalid named ranges before exporting the file to avoid such a warning when opening the file in Excel? Alternatively, rewrite the invalid named ranges in the exported file, so they are ignored by Excel when opening the exported file.
By default, when opening a file with invalid named ranges in Excel, there is no automatic warning to the user.
I'm in the process of rewriting all Kendo components to use CSP compatible templates. I'm looking at https://docs.telerik.com/aspnet-core/html-helpers/template/overview which shows how we'd use TemplateComponentName() for popup editors and that we would need to rewrite everything in the popup editor to use Kendo Template's AddHtml or AddComponent methods.
Original:
<div class="mb-2 row required">
@Html.LabelFor(model => model.FileName, new { @class = "col-sm-4 col-form-label fw-bold text-sm-end" })
<div class="col-sm-6">
@(Html.Kendo().TextBoxFor(model => model.FileName).HtmlAttributes(new { @class = "w-100" }))
</div>
</div>
<div class="mb-2 row">
@Html.LabelFor(model => model.FileDescription, new { @class = "col-sm-4 col-form-label fw-bold text-sm-end" })
<div class="col-sm-6">
@(Html.Kendo().TextBoxFor(model => model.FileDescription).HtmlAttributes(new { @class = "w-100" }))
</div>
</div>
Rewritten:
@(Html.Kendo().Template()
.AddHtml("<div class='mb-2 row required'>")
.AddHtml(@<text>
@Html.LabelFor(model => model.FileName, new { @class = "col-sm-4 col-form-label fw-bold text-sm-end" })
</text>)
.AddHtml("<div class='col-sm-6'>")
.AddComponent(c => c.TextBoxFor(model => model.FileName).HtmlAttributes(new { @class = "w-100" }))
.AddHtml("</div></div>")
.AddHtml("<div class='mb-2 row'>")
.AddHtml(@<text>
@Html.LabelFor(model => model.FileDescription, new { @class = "col-sm-4 col-form-label fw-bold text-sm-end" })
</text>)
.AddHtml("<div class='col-sm-6'>")
.AddComponent(c => c.TextBoxFor(model => model.FileDescription).HtmlAttributes(new { @class = "w-100" }))
.AddHtml("</div></div>")
)
While this works, this markup seems much harder to read than the original. Could this be made to be simpler? Ideally I'd like to be able to drop my existing mix of html and kendo components in one method and it'd parse through to render the template properly.
When using the Kendo MultiSelect TagHelper and binding it to a model property, the selected values are not populated.
Create the MultiSelect and bind it to a property of the view model:
@model API.Models.IndexViewModel
<kendo-multiselect for="SelectedCategoriesTagHelper"
bind-to="@Model.Categories"
datatextfield="Text"
datavaluefield="Value"
></kendo-multiselect>
The MultiSelect TagHelper should correctly display the selected values when bound to a model property.
1682678
### Bug report
When adding a <select> element as a custom tool in the Editor, the dropdown does not open.
### Reproduction of the problem
1) Run the Dojo sample and try to open the dropdown in the toolbar:
https://dojo.telerik.com/VVPUopDw
The same example work as expected with version 2023.1.117.
2) When using version 2024.4.1112, if you remove the "ref-toolbar-tool" attribute from the <div class='k-toolbar-item'> element, the dropdown opens as expected.
### Expected/desired behavior
The <select> element must function correctly when added as a custom tool in the toolbar.
### Workaround
Handle the "click" event of the select and prevent the event bubbling:
<script>
$(function () {
const selectElements = $('select[id^="symbolSelect_"]');
$(selectElements).each(function (index) {
this.addEventListener("click", clickHandlerSymbolSelect);
});
});
function clickHandlerSymbolSelect(e) {
e.stopPropagation(); //Prevent event bubbling, so Kendo cannot swallow or cancel the event.
const sendingElement = e.target;
sendingElement.showPicker();
return true;
}
</script>
### Environment
* **Kendo UI version: 2025.1.227
* **jQuery version: 3.7.1
* **Browser: [all]