In Development
Last Updated: 20 Mar 2026 08:42 by ADMIN
Scheduled for 2026 Q2
Created by: Robert
Comments: 3
Category: Grid
Type: Bug Report
0
A virtual Grid does not handle well dynamic RowHeight changes. The virtual scrollbar is not refreshed and scrolling breaks.
Completed
Last Updated: 20 Mar 2026 08:15 by ADMIN
Release 2026 Q2

How to reproduce:

  1. Go to https://demos.telerik.com/blazor-ui/grid/editing-incell
  2. Go to the last Grid page, which has empty space below the last table row.
  3. Open any Grid cell for editing.
  4. Click on the empty space in the Grid below the last table row.
  5. The Grid does not exit edit mode like it should.

The regression was introduced in version 12.2.0. The last version that works correctly is 12.0.0.

The possible workarounds are:

@using System.ComponentModel.DataAnnotations
@using Telerik.DataSource
@using Telerik.DataSource.Extensions

<TelerikGrid @ref="@GridRef"
             OnRead="@OnGridRead"
             TItem="@Product"
             EditMode="@GridEditMode.Incell"
             OnCreate="@OnGridCreate"
             OnDelete="@OnGridDelete"
             OnUpdate="@OnGridUpdate"
             Height="600px">
    <GridToolBarTemplate>
        <GridCommandButton Command="Add">Add Item</GridCommandButton>
    </GridToolBarTemplate>
    <GridColumns>
        <GridColumn Field="@nameof(Product.Name)">
            <EditorTemplate>
                @{ var dataItem = (Product)context; }
                <span @onfocusout="@( async () => await OnGridCellFocusOut(nameof(Product.Name)) )">
                    <TelerikTextBox @bind-Value="@dataItem.Name" />
                </span>
            </EditorTemplate>
        </GridColumn>
        @* <GridColumn Field="@nameof(Product.Price)" DisplayFormat="{0:C2}" />
        <GridColumn Field="@nameof(Product.Quantity)" DisplayFormat="{0:N0}" />
        <GridColumn Field="@nameof(Product.ReleaseDate)" DisplayFormat="{0:d}" /> *@
        <GridColumn Field="@nameof(Product.Discontinued)" Width="120px">
            <EditorTemplate>
                @{ var dataItem = (Product)context; }
                <span @onfocusout="@( async () => await OnGridCellFocusOut(nameof(Product.Discontinued)) )">
                    <TelerikCheckBox @bind-Value="@dataItem.Discontinued" />
                </span>
            </EditorTemplate>
        </GridColumn>
        <GridCommandColumn Width="180px">
            <GridCommandButton Command="Delete">Delete</GridCommandButton>
        </GridCommandColumn>
    </GridColumns>
</TelerikGrid>

@code {
    private TelerikGrid<Product>? GridRef { get; set; }

    private ProductService GridProductService { get; set; } = new();

    private async Task OnGridCellFocusOut(string field)
    {
        await Task.Delay(100);

        if (GridRef is null)
        {
            return;
        }

        GridState<Product> gridState = GridRef.GetState();
        Product? editItem = gridState.EditItem as Product;

        if (editItem is null)
        {
            return;
        }

        GridCommandEventArgs args = new GridCommandEventArgs()
        {
             Field = field,
             Item = editItem
        };

        await OnGridUpdate(args);


        gridState.EditField = default;
        gridState.EditItem = default!;
        gridState.OriginalEditItem = default!;

        await GridRef.SetStateAsync(gridState);
    }

    private async Task OnGridCreate(GridCommandEventArgs args)
    {
        var createdItem = (Product)args.Item;

        await GridProductService.Create(createdItem);
    }

    private async Task OnGridDelete(GridCommandEventArgs args)
    {
        var deletedItem = (Product)args.Item;

        await GridProductService.Delete(deletedItem);
    }

    private async Task OnGridRead(GridReadEventArgs args)
    {
        DataSourceResult result = await GridProductService.Read(args.Request);

        args.Data = result.Data;
        args.Total = result.Total;
        args.AggregateResults = result.AggregateResults;
    }

    private async Task OnGridUpdate(GridCommandEventArgs args)
    {
        var updatedItem = (Product)args.Item;

        await GridProductService.Update(updatedItem);
    }

    public class Product
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; } = string.Empty;
        public string Description { get; set; } = string.Empty;
        public decimal? Price { get; set; }
        public int Quantity { get; set; }
        [Required]
        public DateTime? ReleaseDate { get; set; }
        public bool Discontinued { get; set; }
    }

    #region Data Service

    public class ProductService
    {
        private List<Product> Items { get; set; } = new();

        private int LastId { get; set; }

        public async Task<int> Create(Product product)
        {
            await SimulateAsyncOperation();

            product.Id = ++LastId;

            Items.Insert(0, product);

            return LastId;
        }

        public async Task<bool> Delete(Product product)
        {
            await SimulateAsyncOperation();

            if (Items.Contains(product))
            {
                Items.Remove(product);

                return true;
            }

            return false;
        }

        public async Task<List<Product>> Read()
        {
            await SimulateAsyncOperation();

            return Items;
        }

        public async Task<DataSourceResult> Read(DataSourceRequest request)
        {
            return await Items.ToDataSourceResultAsync(request);
        }

        public async Task<bool> Update(Product product)
        {
            await SimulateAsyncOperation();

            int originalItemIndex = Items.FindIndex(x => x.Id == product.Id);

            if (originalItemIndex != -1)
            {
                Items[originalItemIndex] = product;
                return true;
            }

            return false;
        }

        private async Task SimulateAsyncOperation()
        {
            await Task.Delay(100);
        }

        public ProductService(int itemCount = 5)
        {
            Random rnd = Random.Shared;

            for (int i = 1; i <= itemCount; i++)
            {
                Items.Add(new Product()
                {
                    Id = ++LastId,
                    Name = $"Product {LastId}",
                    Description = $"Multi-line\ndescription {LastId}",
                    Price = LastId % 2 == 0 ? null : rnd.Next(0, 100) * 1.23m,
                    Quantity = LastId % 2 == 0 ? 0 : rnd.Next(0, 3000),
                    ReleaseDate = DateTime.Today.AddDays(-rnd.Next(365, 3650)),
                    Discontinued = LastId % 2 == 0
                });
            }
        }
    }

    #endregion Data Service
}

 

In Development
Last Updated: 20 Mar 2026 07:23 by ADMIN
Scheduled for 2026 Q2

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.

Example: https://blazorrepl.telerik.com/QTYmkpvb49c6CPxa42

Unplanned
Last Updated: 19 Mar 2026 15:27 by Peter

Bug report

Reproduction of the problem

Possibly related to https://github.com/telerik/blazor/issues/2594

  1. Run this example: https://blazorrepl.telerik.com/wAkdbZPo47oCuV5G32
  2. Without scrolling the Grid horizontally resize a non-locked column (e.g., In Stock)

Current behavior

(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.

Expected/desired behavior

The order of the locked columns should persist.

Environment

  • Telerik version: 13.0.0
  • Browser: [all]
Planned
Last Updated: 19 Mar 2026 15:07 by ADMIN
Scheduled for 2026 Q2

DatePicker cursor not advancing after month input. The problem arises when dd/MMM/yyyy format is applied.

To reproduce the issue open this REPL example. Type any date in the second DatePicker. When inserting a month value the cursor is not moved to the year section.

After inserting a month the cursor should be moved to the year section. As when no format is applied (the first DatePicker)
Unplanned
Last Updated: 19 Mar 2026 15:06 by ADMIN
Scheduled for 2026 Q2
Enter "01" in the "hour" section. You’ll notice that the cursor does not automatically move to the next section until another digit is entered.
Unplanned
Last Updated: 19 Mar 2026 14:46 by Clifton
Specifically, if the div mentioned in the error does not have tabindex=1, tabbing from the header causes the browser to focus that area, which is not the expected behavior. Ideally, the focus should move to the first cell, as that intermediate area is not user-interactive.

On the other hand, if tabindex=-1 is used, tools like Аxe and Lighthouse report errors. Removing the tabindex attribute altogether still results in errors, and the browser continues to focus that area.

We are actively exploring possible approaches to address this, but at the moment, there is no immediate solution we can apply without side effects.
Declined
Last Updated: 19 Mar 2026 11:24 by ADMIN
Created by: Andreas
Comments: 5
Category: Editor
Type: Bug Report
1

When a table row does not have any cells, there might be lots of script errors when hovering the empty row with the mouse.

The error is the following:
Uncaught RangeError: Not a table node: doc

    get http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    get http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    decorations http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    decorations http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Fa http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    someProp http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Fa http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    updateStateInner http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    updateState http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    dispatch http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Bu http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    mousemove http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    mousemove http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Vo http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    someProp http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Vo http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    i http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Jo http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    someProp http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Jo http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Wa http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Wa http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    initEditor http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    initialize http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    d http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    initComponent http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    initEditor http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    processJSCall http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    beginInvokeJSFromDotNet http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _invokeClientMethod http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _processIncomingData http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    onreceive http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    onmessage http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    connect http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    connect http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _startTransport http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _createTransport http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _startInternal http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    start http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _startInternal http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _startWithStateTransitions http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    start http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    startConnection http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    startCore http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    start http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    rr http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    or http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    startCircutIfNotStarted http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    resolveRendererIdForDescriptor http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    determinePendingOperation http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    refreshRootComponents http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    rootComponentsMayRequireRefresh http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    rootComponentsMayRequireRefresh http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    onDocumentUpdated http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    Ki http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    Vi http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    <anonymous> http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    <anonymous> http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1

 

Sometimes we even have a server error:
Microsoft.JSInterop.JSException: Not a table node: table_wrapper
RangeError: Not a table node: table_wrapper
    at https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1557112
    at pl.get (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1558816)
    at https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1638148
    at Be.decorations (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1638538)
    at https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1529498
    at Wa.someProp (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1548718)
    at Fa (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1529464)
    at Wa.updateStateInner (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1545305)
    at Wa.update (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1544591)
    at Wa.setProps (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1544734)
   at Microsoft.JSInterop.JSRuntime.InvokeAsync[TValue](Int64 targetInstanceId, String identifier, Object[] args)
   at Telerik.Blazor.Components.TelerikEditor.SetOptions()
   at Telerik.Blazor.Components.TelerikEditor.OnParametersSetAsync()
   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)

The server error is really hard to recreate, but it seems like users that has a slow computer and hovers the editor directly when loading gets this error sometimes...

Here is the source code (hovering the empty row will generate scripting errors):

<TelerikEditor Height="300px" @bind-Value="@Value" EditMode="Telerik.Blazor.EditorEditMode.Iframe" ReadOnly="true">
</TelerikEditor>

@code {
    public string Value { get; set; } =
            @"
<table>
    <tbody>
        <tr>
            <td>
               Some text
            </td>
        </tr>
        <tr style=""height: 24px"">
        </tr>
        <tr>
            <td>
                Some text
            </td>
        </tr>
    </tbody>
</table>
    ";
}

In Development
Last Updated: 19 Mar 2026 10:06 by ADMIN
Scheduled for 2026 Q2

The Tooltip component throws a JavaScript error when the user opens an adaptive dropdown component and tries to interact with it:

Uncaught TypeError: popup.isParent is not a function

Here is a test page. Open the DropDownList on a narrow screen and click on the adaptive ActionSheet.

 

<TelerikButton Class="tooltip-target" Title="Telerik Tooltip">Button</TelerikButton>

<TelerikDropDownList Data="@ListItems"
                     @bind-Value="@SelectedValue"
                     TextField="@nameof(ListItem.Text)"
                     ValueField="@nameof(ListItem.Id)"
                     AdaptiveMode="@AdaptiveMode.Auto"
                     Width="300px" />
<TelerikTooltip TargetSelector=".tooltip-target"
                ShowOn="@TooltipShowEvent.Hover" />

@code {
    private List<ListItem> ListItems { get; set; } = new();

    private int SelectedValue { get; set; } = 3;

    protected override void OnInitialized()
    {
        ListItems = new List<ListItem>();
        for (int i = 1; i <= 5; i++)
        {
            ListItems.Add(new ListItem()
            {
                Id = i,
                Text = $"Item {i}",
                Category = $"Category {i % 6 + 1}"
            });
        }
        base.OnInitialized();
    }

    public class ListItem
    {
        public int Id { get; set; }
        public string Text { get; set; } = string.Empty;
        public string Category { get; set; } = string.Empty;
    }
}

 

Unplanned
Last Updated: 18 Mar 2026 15:11 by ADMIN
Created by: Jeremi
Comments: 2
Category: UI for Blazor
Type: Bug Report
0

Description

When the dropdown is open, the button's aria-controls attribute references a value that matches the popup's data-id, not its actual id. Since aria-controls must point to an element's id, the attribute is invalid and no element in the DOM matches the reference, breaking the accessible relationship between the button and its popup. 

Button renders:

aria-controls="50dc5df2-b83e-41bd-8c34-98470aba77c6"

Popup element has:

data-id="50dc5df2-b83e-41bd-8c34-98470aba77c6"
id="8630d4e4-2f22-4eaf-b96c-7cae113b70ed"

Steps to Reproduce

  1. Add a TelerikDropDownButton using the standard Telerik example (source below).
  2. Open the dropdown and inspect the HTML or run a Lighthouse audit.
<TelerikDropDownButton Icon="@SvgIcon.Share" OnClick="@(()=>OnItemClick("Primary"))">
    <DropDownButtonContent>Share</DropDownButtonContent>
    <DropDownButtonItems>
        <DropDownButtonItem Icon="@SvgIcon.Facebook" OnClick="@(()=>OnItemClick("Facebook"))">Facebook</DropDownButtonItem>
        <DropDownButtonItem Icon="@SvgIcon.Twitter" OnClick="@(()=>OnItemClick("Twitter"))">Twitter</DropDownButtonItem>
        <DropDownButtonItem Icon="@SvgIcon.Linkedin" OnClick="@(()=>OnItemClick("Linkedin"))">Linkedin</DropDownButtonItem>
        <DropDownButtonItem Icon="@SvgIcon.Reddit" OnClick="@(()=>OnItemClick("Reddit"))">Reddit</DropDownButtonItem>
    </DropDownButtonItems>
</TelerikDropDownButton>


Planned
Last Updated: 17 Mar 2026 14:40 by ADMIN
Scheduled for 2026 Q2
When the floating pane is initially set to Visible=false, docking no longer works after it is shown.
In Development
Last Updated: 17 Mar 2026 09:46 by ADMIN
Scheduled for 2026 Q2
Created by: Ola
Comments: 0
Category: MultiColumnComboBox
Type: Bug Report
2
We are using the TelerikMultiColumnComboBox in AdaptiveMode.Auto and with an OnRead filter.

On small viewports and entering something in the searchbox, the key is cleared after entering just one char. This is only happening in the mobile view, otherwise it works fine and one can enter more characters.
Planned
Last Updated: 16 Mar 2026 14:32 by ADMIN
Scheduled for 2026 Q2

The value in a numeric textbox cannot be changed for negative numerbes unless you erase all the text and restart.

 

<TelerikNumericTextBox Decimals="4"Max="5"Value="-4.56m"Id="general"></TelerikNumericTextBox>

 

    
Planned
Last Updated: 16 Mar 2026 14:27 by ADMIN
Scheduled for 2026 Q2

When you select a date in DropDownList with dates in it (List<DateTime>), the @bind-Value is shaving off the milliseconds.

 

===ADMIN EDIT===

In the meantime, as a workaround for displaying milliseconds correctly, you can bind the DropDownList to a model. This way, you can use the "Id" to retrieve the selected item and display its precise milliseconds. Below is an example I've prepared to demonstrate this approach:

Selected value: @myDdlData.ToList().Where(x => x.Id == selectedValueId).FirstOrDefault()?.MyValueField.ToString("MM/dd/yyyy HH:mm:ss.fff")
<br />

<TelerikDropDownList Data="@myDdlData" 
                     TextField="MyTextField" 
                     ValueField="Id" 
                     @bind-Value="selectedValueId">
</TelerikDropDownList>

@code {
    public class MyDdlModel
    {
        public int Id { get; set; }
        public DateTime MyValueField { get; set; }
        public string MyTextField => MyValueField.ToString("MM/dd/yyyy HH:mm:ss.fff"); // Display formatted DateTime
    }

    private int selectedValueId { get; set; } = 1;

    private IEnumerable<MyDdlModel> myDdlData = GenerateRandomDateTimes(20);

    private static IEnumerable<MyDdlModel> GenerateRandomDateTimes(int count)
    {
        Random random = new Random();
        DateTime startDate = DateTime.Now;

        return Enumerable.Range(1, count)
            .Select(x => new MyDdlModel
            {
                Id = x, // Unique integer Id
                MyValueField = startDate.AddDays(x)
                    .AddMinutes(random.Next(0, 60))
                    .AddSeconds(random.Next(0, 60))
                    .AddMilliseconds(random.Next(0, 1000))
            }).ToList();
    }
}

Planned
Last Updated: 16 Mar 2026 14:26 by ADMIN
Scheduled for 2026 Q2

When ActiveTabId is null, the TabStrip selects the first tab automatically, but does not render its content.

<TelerikTabStrip @bind-ActiveTabId="@TabStripActiveTabId">
    <TabStripTab Title="First" Id="t1">
        First tab content.
    </TabStripTab>
    <TabStripTab Title="Second" Id="t2">
        Second tab content.
    </TabStripTab>
    <TabStripTab Title="Third" Id="t3">
        Third tab content.
    </TabStripTab>
</TelerikTabStrip>

@code {
    private string? TabStripActiveTabId { get; set; }
}

Completed
Last Updated: 16 Mar 2026 14:02 by ADMIN
Release 2026 Q2
Created by: Michal
Comments: 3
Category: Filter
Type: Bug Report
0

Hello,

 at version 12.3.0 TelerikFilter is crashing "at load". Prior this version, same markup = ok.

Error: System.InvalidOperationException: Object of type 'Telerik.Blazor.Components.TelerikFilter' does not have a property matching the name 'ValueChanged'.

also in demo:

https://www.telerik.com/blazor-ui/documentation/components/filter/integration

usage:

<TelerikFilter @bind-Value="@AdvancedFilterValue">
	<FilterFields>
		@foreach (var it in GridDef.ColStore.Where(x => x.Verejny == true))
		{
			<FilterField Name="@it.FldName" Type="@it.FldType" Label="@it.VerejnyNazev"></FilterField>
		}
	</FilterFields>
</TelerikFilter>
Unplanned
Last Updated: 16 Mar 2026 09:27 by ADMIN

Description

When the dropdown is open, the input's aria-activedescendant attribute references an id that does not exist in the DOM. Since aria-activedescendant must point to the id of an actually rendered option element, the attribute is invalid and assistive technologies cannot determine which option is currently active.

Input renders:

aria-activedescendant="b45bcb14-4093-4de8-ad31-cae8ec8ca9c4"
None of the rendered <li> option elements have this id.

Steps to Reproduce

  1. Add a TelerikMultiSelect using the standard Telerik example (source below).
  2. Open the dropdown and inspect the HTML or run a Lighthouse audit.
<TelerikMultiSelect Data="@Hobbies"
@bind-Value="@SelectedHobbyIds"
ValueField="@nameof(HobbiesDto.HobbyId)"
TextField="@nameof(HobbiesDto.HobbyName)"
Placeholder="Select your favourite sport..."
Id="multiselect"
Width="100%"
Rounded="@ThemeConstants.DropDownList.Rounded.Medium"
FillMode="@ThemeConstants.AutoComplete.FillMode.Outline"
TagMode="@MultiSelectTagMode.Single"
ShowClearButton="false">
    <MultiSelectSettings>
        <MultiSelectPopupSettings Height="@CustomThemeConstants.Multiselect.PopupHeight" MaxHeight="@CustomThemeConstants.Multiselect.PopupMaxHeight" />
    </MultiSelectSettings>
</TelerikMultiSelect>

@code {
    public List<int> SelectedHobbyIds { get; set; } = [];

    public IEnumerable<HobbiesDto> Hobbies { get; set; } = new List<HobbiesDto>()
    {
        new HobbiesDto(1, "Basketball"),
        new HobbiesDto(2, "Golf"),
        new HobbiesDto(3, "Baseball"),
        new HobbiesDto(4, "Table Tennis"),
        new HobbiesDto(5, "Volleyball"),
        new HobbiesDto(6, "Football"),
        new HobbiesDto(7, "Boxing"),
        new HobbiesDto(8, "Badminton"),
        new HobbiesDto(9, "Cycling"),
        new HobbiesDto(10, "Gymnastics"),
        new HobbiesDto(11, "Swimming"),
        new HobbiesDto(12, "Wrestling"),
        new HobbiesDto(13, "Snooker"),
        new HobbiesDto(14, "Skiing"),
        new HobbiesDto(15, "Handball"),
    };

    public class HobbiesDto
    {
        public int    HobbyId   { get; set; }
        public string HobbyName { get; set; } = string.Empty;

        public HobbiesDto() { }

        public HobbiesDto(int id, string name)
        {
            HobbyId = id;
            HobbyName = name;
        }
    }
}


Declined
Last Updated: 16 Mar 2026 07:32 by ADMIN
Created by: Michal
Comments: 7
Category: Grid
Type: Bug Report
0

Hello,

seems like the GridToolbar(even the GridToolbarTemplate) in grid is not rendering "GridToolBarOverflowMode.Section". The "Scroll" mode is ok.

Is there any additional setup, or did i missed some setup...?

REPL:

 https://blazorrepl.telerik.com/wqYQvvEq40GkajEZ30

based on:
https://www.telerik.com/blazor-ui/documentation/components/grid/toolbar

some mention about "sections" but it seems for another purpose:

https://www.telerik.com/blazor-ui/documentation/knowledge-base/common-net8-sections

Thanks

Completed
Last Updated: 16 Mar 2026 06:37 by ADMIN
Release 2026 Q2
Created by: James
Comments: 0
Category: Grid
Type: Bug Report
0

An exception occurs if a Grid row is dropped in another empty Grid in RTL mode:

Error: System.FormatException: the input string '-1' was not in a correct format.

Planned
Last Updated: 13 Mar 2026 19:08 by ADMIN
Scheduled for 2026 Q2

The following exception occurs:

Microsoft.JSInterop.JSDisconnectedException: JavaScript interop calls cannot be issued at this time. This is because the circuit has disconnected and is being disposed.

............

at Telerik.Blazor.Components.Common.Loader.ComponentLoaderContainer.DisposeAsync()

When the user closes the browser and the web page contains any of the below components:

  • DockManager
  • FileManager
  • Grid
  • ListView
  • PdfViewer
  • PivotGrid
  • Scheduler
  • SpreadSheet
  • TreeList

 

1 2 3 4 5 6