I am resetting the Grid State by calling Grid.SetState(null). This doesn't reset ColumnState<T>.Locked boolean to false and the columns remain locked.
---
ADMIN EDIT
---
A possible workaround for the time being is to additionally loop through the ColumnStates collection of the State and set the Locked property to false for each column.
The DateInput value disappears on focus when it is set with an async operation in OnInitializedAsync and AutoCorrectParts is false. Potentially related to Cannot select new DatePicker value from the Calendar when AutoCorrectParts is false
Test page with a workaround:
https://blazorrepl.telerik.com/cKkUaDbm09LYyPvg11
<p> The DateInput Value is: @DateValue </p>
@if (ShouldRenderDateInput)
{
<TelerikDateInput @bind-Value="@DateValue"
Format="dd/MM/yyyy"
AutoCorrectParts="false"
Width="200px" />
}
@* the else block is optional to prevent delayed component appearance *@
else
{
<TelerikDateInput @bind-Value="@DateValue"
Format="dd/MM/yyyy"
AutoCorrectParts="false"
Width="200px" />
}
@code {
private DateTime? DateValue { get; set; }
private bool ShouldRenderDateInput { get; set; }
protected override async Task OnInitializedAsync()
{
await Task.Delay(200);
DateValue = new DateTime(2026, 06, 22);
ShouldRenderDateInput = true;
}
}
When I have a DatePicker and it's DateOnly value is default, the control displays 1/1/2001 instead of either nothing, a placeholder, or the correct value.
The image above shows the DatePicker value and the current value in the model underneath.
Please advise.
We upgraded to the latest Telerik Blazor components (8.1.1).
I think there's a bug in the TabStrip when setting the index of the ActiveTabIndex or @bind-ActiveTabIndex.
The page will scroll to the active tab automatically.
Here's a link to the Repl - https://blazorrepl.telerik.com/GfaTEmbR45zQSzEq44
If you remove @bind-ActiveTabIndex="@ActiveTabIndex" from the TelerikTabStrip then the page load normally.
Thanks,
Cesar
The DateInput / TimePicker display the current Format instead of the component Value when the current culture / localization is not English (en).
DateTime values show as expected.
If the Height parameter is not specified, in the Gantt tree list, every line after the number of lines of the initial display are not shown.
The steps are easy to reproduce:
Start from the official Gantt Demo in the REPL and simply remove the Height parameter from TelerikGantt.
If you do this, you will see that opening the children of the first and only element in the tree list will show everything correctly in the Timeline part (if no mistake) but doesn't show the children lines in the TreeList part.
Therefore, I believe, the Height parameter should become mandatory until we can allow the height of the Gantt to be dynamic without rendering issues.
The TabStrip ActiveTabIdChanged event fires when the user navigates to another page.
The workaround is to detect app navigation and prevent the business logic execution. The example below is for the general case. If the app navigates programmatically with NavigationManager.NavigateTo(), you can set the IsNavigating flag immediately before that.
@implements IDisposable
@inject NavigationManager NavManager
<TelerikTabStrip ActiveTabId="@ActiveTabId"
ActiveTabIdChanged="@TabStripActiveTabIdChanged">
@for (int i = 1; i <= TabCount; i++)
{
int tabIndex = i;
<TabStripTab @key="@tabIndex" Title="@($"Tab {tabIndex}")" Id="@($"tab{tabIndex}")">
<h2>Tab @tabIndex</h2>
</TabStripTab>
}
</TelerikTabStrip>
@code {
private string ActiveTabId { get; set; } = "tab1";
private bool IsNavigating { get; set; }
private const int TabCount = 3;
private async Task TabStripActiveTabIdChanged(string newActiveTabId)
{
if (IsNavigating)
{
return;
}
ActiveTabId = newActiveTabId;
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
locationChangingRegistration = NavManager.RegisterLocationChangingHandler(OnLocationChanging);
}
}
private IDisposable? locationChangingRegistration;
private ValueTask OnLocationChanging(LocationChangingContext context)
{
IsNavigating = true;
return ValueTask.CompletedTask;
}
public void Dispose() => locationChangingRegistration?.Dispose();
}
This is a continuation of public item DatePicker, TimePicker and DateTimePicker should accept null value as valid when bound to nullable DateTime
The problem persist when:
Test page with workarounds:
Bug due to week day format string inconsistency between .NET and JavaScript (dddd vs EEEE):
<TelerikDateTimePicker @bind-Value="@SelectedTime"
ShowClearButton="true"
Width="360px">
<DateTimePickerFormatPlaceholder Weekday="week" />
</TelerikDateTimePicker>
<br />
<br />
Bug due to usage of a standard date format string:
<TelerikDatePicker @bind-Value="@SelectedTime"
ShowClearButton="true"
Format="d"
Width="360px">
<DateTimePickerFormatPlaceholder Day="dd" Month="mm" Year="yyyy" />
</TelerikDatePicker>
@code {
private DateTime? SelectedTime = DateTime.Now;
}
I've determined that the TelerikDateTimePicker does not work properly on mobile devices when using AdaptiveMode.Auto. Attached are videos of the component's behaviour in both modes (None, and Auto).
Immediately after interacting with the fullscreen popup of the datepicker, I see this error in the console:
RAW:
telerik-blazor.js:50 Uncaught TypeError: r.isParent is not a function
at p.isChild (telerik-blazor.js:50:1362352)
at f.closePopup (telerik-blazor.js:50:1398427)
at HTMLHtmlElement.onMouseDown (telerik-blazor.js:50:1397246)
Code:
@using Telerik.Blazor.Components
@using Telerik.Blazor
<TelerikFloatingLabel Text="Date & Time">
<TelerikDateTimePicker Id="date-picker" @bind-Value="MyFormModel.Date" Max="@DateTime.Now.AddDays(1)"
Format="@DATE_FORMAT" AdaptiveMode="AdaptiveMode.Auto"
FillMode="@Telerik.Blazor.ThemeConstants.DateTimePicker.FillMode.Flat" />
</TelerikFloatingLabel>
@code {
private FormModel MyFormModel { get; set; } = new FormModel();
private const string DATE_FORMAT = "MM/dd/yyyy HH:mm";
private class FormModel
{
public DateTime Date { get; set; }
}
}
Notes:
- If we remove all of the parent components wrapping the DatePicker, it seems to function properly, but the errors remain in the console. This isn't a solution, however.
At the moment start and end times effectively "round" to the nearest half an hour. This can give the impression of events overlapping when they do not
e.g.

Admin edit: This feature would be similar to the Exact Time Rendering in our WebForms suite: https://demos.telerik.com/aspnet-ajax/scheduler/examples/exacttimerendering/defaultcs.aspx
Possibly related to https://github.com/telerik/blazor/issues/2594
(optional)
The first locked column (ID) is rendered after the second locked column (Product Name). When you resize a non-locked column, the ID column disappears and is revealed at its new position after you scroll the Grid horizontally.
The behavior is reproducible with RTL enabled.
The order of the locked columns should persist.
We have a Telerik card control that uses the Card Image. Upon inspecting the HTML issues, I see that it is missing an alt tag for a few images. When I drill down, these images are from our card image. Is there a plan to add an alt tag?
=====ADMIN EDIT======
Possible workaround in the meantime:
<TelerikCard Width="300px">
<CardHeader>
<CardTitle>Tourism</CardTitle>
</CardHeader>
<img class="k-card-media" alt="test" src="https://docs.telerik.com/blazor-ui/components/card/images/rome.jpg" />
<CardBody>
<CardTitle>Rome</CardTitle>
<CardSubTitle>Capital of Italy</CardSubTitle>
<CardSeparator></CardSeparator>
<p>
Rome is a sprawling, cosmopolitan city with nearly 3,000 years of globally influential art, architecture and culture on display.
Ancient ruins such as the Forum and the Colosseum evoke the power of the former Roman Empire.
</p>
</CardBody>
<CardActions Layout="@CardActionsLayout.Stretch">
<TelerikButton Class="k-flat" Icon="@SvgIcon.HeartOutline" Title="Like"></TelerikButton>
<TelerikButton Class="k-flat" Icon="@SvgIcon.Comment" Title="Comment"></TelerikButton>
<TelerikButton Class="k-flat">Read More</TelerikButton>
</CardActions>
<CardFooter>
<span style="float:left">Created by @@john</span>
<span style="float:right">March 05, 2021</span>
</CardFooter>
</TelerikCard>
The problem at hand arises when attempting to update the CheckedItems property of a TreeView control from within an async method.
The problem seems to be timing-related and is not always reproducible. The issue is observed most often when starting the project. It seems to be reproducible only in Blazor Server App.
Reproduction:
To reproduce the issue, try running the following snippet in a Blazor Server App.
@page "/"
<TelerikTreeView Data="@FlatData"
CheckBoxMode="@TreeViewCheckBoxMode.Multiple"
CheckParents="@true"
CheckChildren="@true"
CheckOnClick="@false"
@bind-CheckedItems="@SelectedItems">
</TelerikTreeView>
@code {
List<TreeItem> FlatData { get; set; }
IEnumerable<object> SelectedItems { get; set; } = new List<object>();
protected override async Task OnInitializedAsync()
{
await GenerateData();
await SelectDefault();
}
async Task SelectDefault()
{
await Task.Delay(100);
SelectedItems = FlatData.Where(data => data.Id == 2);
}
#pragma warning disable
async Task GenerateData()
{
FlatData = new List<TreeItem>();
FlatData.Add(new TreeItem()
{
Id = 1,
Text = "Project",
ParentId = null,
HasChildren = true,
Icon = "folder",
Expanded = true
});
FlatData.Add(new TreeItem()
{
Id = 2,
Text = "Design",
ParentId = 1,
HasChildren = true,
Icon = "brush",
Expanded = true
});
FlatData.Add(new TreeItem()
{
Id = 3,
Text = "Implementation",
ParentId = 1,
HasChildren = true,
Icon = "folder",
Expanded = true
});
}
public class TreeItem
{
public int Id { get; set; }
public string Text { get; set; }
public int? ParentId { get; set; }
public bool HasChildren { get; set; }
public string Icon { get; set; }
public bool Expanded { get; set; }
}
}
The second TreeItem should be selected.
When Adaptive = true, changing the collection of buttons seems to "break" the adaptive calculation. The Toolbar fails to determine what are the buttons to show in the main element and what are the buttons to show in the pop-up: https://blazorrepl.telerik.com/wSubOWlS08FLz7aZ54
===
ADMIN EDIT
For the time being, a possible workaround is to force the component to refresh when you change the buttons. For that purpose, you can dispose it and re-initialize it after some delay. Here is a runnable sample: https://blazorrepl.telerik.com/QIOFuCvS400o5tfL34.
For some reason I'm unable to select the date 01/03/2000 when using the date picker to select the date. Only thing special about this date is its exactly 24 years ago today.
I was able to reproduce in repl. https://blazorrepl.telerik.com/QyYFkdbU34QbG0Te32
I also attached a video so you can review the steps followed and result.