(bug report only)
Run this example and follow the instructions in it: https://blazorrepl.telerik.com/GAkAvYaB36nYAsr539
(optional)
Indent does not work inside lists.
Indent works inside lists.
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;
}
}
(bug report only)
The issue is reproducible when SlotDivisions is set to 1. If it is set to 2, or 3, the events are displayed correcty.
1. Run the following example: https://blazorrepl.telerik.com/wKOgYNbv564C2KOK04
(optional)
Events overlap.
Events are shown stacked.
The FileManager crashes with a null reference exception when the selected file is deleted while the preview pane is open.
https://demos.telerik.com/blazor-ui/filemanager/overview
Error: System.NullReferenceException: Object reference not set to an instance of an object.
at System.Object.GetType()
at Telerik.Blazor.Components.TelerikFileManager`1.ConvertToFileEntry(Object dataItem)
at Telerik.Blazor.Components.TelerikFileManager`1.GetSelectedEntryForDetails()
at Telerik.Blazor.Components.TelerikFileManager`1.<BuildRenderTree>b__397_15(RenderTreeBuilder __builder3)
at Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(Int32 sequence, RenderFragment fragment)
at Telerik.Blazor.Components.TelerikSplitter.BuildRenderTree(RenderTreeBuilder __builder)
at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)
The problem with the extra characters at the beginning of the PDF document has resurfaced.
The bytes returned by GetFileAsync() don't start with %PDF-, but with JS.ReceiveByteArray. Some PDF readers and my antivirus flag the file as corrupt or suspicious. I worked around it by stripping everything before the first %PDF- occurrence in the bytes before writing to disk.
The Grid performance worsens progressively with each subsequent edit operation. Please optimize that.
Test page: https://blazorrepl.telerik.com/mJuHFNbb17FpJu9b54
Click on a Price or Quantity cell to start edit mode and tab repetitively to observe the degradation.
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
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 window actions OnClick handler does not execute when a predefined action (e.g. Close) is triggered. This prevents custom logic from running during standard close operations.
Reproducible on version 14.0.0
Repro: https://blazorrepl.telerik.com/wqaJcWbu45qZxbeX49
The CheckBoxList filter does not work as expected when the Grid is bound to ExpandoObject
===
ADMIN EDIT: A possible workaround is to bind the Grid with OnRead event and populate the MemberType property of the filter descriptors manually:
@using System.Dynamic
@using Telerik.DataSource
@using Telerik.DataSource.Extensions
<TelerikGrid OnRead="@OnGridRead"
TItem="@ExpandoObject"
Pageable="true"
Sortable="true"
FilterMode="@GridFilterMode.FilterMenu"
FilterMenuType="@FilterMenuType.CheckBoxList"
Height="400px">
<GridToolBarTemplate>
<GridSearchBox />
</GridToolBarTemplate>
<GridColumns>
@{
if (GridData != null && GridData.Any())
{
<GridColumn Field="PropertyInt" FieldType="@GridPropertyTypes["PropertyInt"]" />
<GridColumn Field="PropertyString" FieldType="@GridPropertyTypes["PropertyString"]" />
<GridColumn Field="PropertyGroup" FieldType="@GridPropertyTypes["PropertyString"]" />
<GridColumn Field="PropertyDate" FieldType="@GridPropertyTypes["PropertyDate"]" />
<GridColumn Field="PropertyBool" FieldType="@GridPropertyTypes["PropertyBool"]" />
}
}
</GridColumns>
</TelerikGrid>
@code {
private List<ExpandoObject> GridData { get; set; } = new List<ExpandoObject>();
private Dictionary<string, Type> GridPropertyTypes { get; set; } = new Dictionary<string, Type>() {
{ "Id", typeof(int) },
{ "PropertyInt", typeof(int) },
{ "PropertyString", typeof(string) },
{ "PropertyGroup", typeof(string) },
{ "PropertyDate", typeof(DateTime) },
{ "PropertyBool", typeof(bool) }
};
private async Task OnGridRead(GridReadEventArgs args)
{
args.Request.Filters.OfType<CompositeFilterDescriptor>()
.Each(x =>
{
x.FilterDescriptors.OfType<FilterDescriptor>()
.Each(y => y.MemberType = GridPropertyTypes[y.Member]);
});
var result = GridData.ToDataSourceResult(args.Request);
args.Data = result.Data;
args.Total = result.Total;
args.AggregateResults = result.AggregateResults;
}
protected override void OnInitialized()
{
for (int i = 1; i <= 18; i++)
{
dynamic expando = new ExpandoObject();
expando.Id = i;
expando.PropertyGroup = $"Group {(i % 3 + 1)}";
expando.PropertyInt = i;
expando.PropertyString = $"String {(char)(64 + i)}{(char)(64 + i)}";
expando.PropertyDate = DateTime.Now.AddMonths(-i);
expando.PropertyBool = i % 2 != 0;
GridData.Add(expando);
}
}
}
The issue is reproducible when the `AllowCustom` parameter is set to `true`.
Typing rapidly in the input field of the MultiColumnComboBox component causes the entered text to blink. Also, some of the inserted symbols are cleared.
Open this demo: https://demos.telerik.com/blazor-ui/multicolumncombobox/custom-values
Try to input text rapidly into the input field.
The PDF standard allows two ways to configure Acro fields and relate them to inputs (widget annotations):
Adobe Acrobat supports both options. Telerik PdfProcessing supports only the first option, which is more commonly used. The PDF Viewer supports only the second option. If the PDF Viewer loads a file with the first configuration, the component saves new field values in such a way that they can't be retrieved by PdfProcessing. Moreover, if the PDF file is opened locally, it looks like the new values are there, but when you click on a field, the original value shows. The new value behaves like a placeholder rather than a real value.
The DropDownTree does not show its selected value if the data is set asynchronously.
Possible workarounds include:
Test page:
DropDownTreeValue1: @DropDownTreeValue1
<br />
DropDownTreeValue2: @DropDownTreeValue2
<br />
Bug:
<TelerikDropDownTree Data="@DropDownTreeData"
@bind-Value="@DropDownTreeValue1"
@bind-ExpandedItems="@DropDownTreeExpandedItems"
Width="300px">
</TelerikDropDownTree>
Workaround:
<TelerikDropDownTree Data="@DropDownTreeData"
@bind-Value="@DropDownTreeValue2"
@bind-ExpandedItems="@DropDownTreeExpandedItems"
Width="300px">
</TelerikDropDownTree>
@* Render DropDownTree after setting Data *@
@if (DropDownTreeData is not null)
{
<span>Workaround:</span>
<TelerikDropDownTree Data="@DropDownTreeData"
@bind-Value="@DropDownTreeValue1"
@bind-ExpandedItems="@DropDownTreeExpandedItems"
Width="300px">
</TelerikDropDownTree>
}
@code {
private List<TreeItem>? DropDownTreeData { get; set; }
private int DropDownTreeValue1 { get; set; }
private int DropDownTreeValue2 { get; set; }
private IEnumerable<object> DropDownTreeExpandedItems { get; set; } = new List<TreeItem>();
protected override async Task OnInitializedAsync()
{
DropDownTreeValue1 = 3;
await Task.Delay(1000);
DropDownTreeData = LoadFlatData();
// Set DropDownTree Value after setting Data
DropDownTreeValue2 = 3;
DropDownTreeExpandedItems = DropDownTreeData.Where(x => x.ParentId is null && x.HasChildren);
}
private int TreeLevels { get; set; } = 3;
private int RootItems { get; set; } = 2;
private int ItemsPerLevel { get; set; } = 2;
private int IdCounter { get; set; }
private List<TreeItem> LoadFlatData()
{
List<TreeItem> items = new List<TreeItem>();
PopulateChildren(items, null, 1);
return items;
}
private void PopulateChildren(List<TreeItem> items, int? parentId, int level)
{
var itemCount = level == 1 ? RootItems : ItemsPerLevel;
for (int i = 1; i <= itemCount; i++)
{
var itemId = ++IdCounter;
items.Add(new TreeItem()
{
Id = itemId,
ParentId = parentId,
HasChildren = level < TreeLevels,
Text = $"Level {level} Item {i} Id {itemId}",
Value = itemId
});
if (level < TreeLevels)
{
PopulateChildren(items, itemId, level + 1);
}
}
}
public class TreeItem
{
public int Id { get; set; }
public int? ParentId { get; set; }
public bool HasChildren { get; set; }
public string Text { get; set; } = string.Empty;
public int Value { get; set; }
}
}