Unplanned
Last Updated: 19 Aug 2025 21:44 by Luke
Created by: Nate
Comments: 4
Category: Grid
Type: Feature Request
8

Similar to the WPF grid I would like the option to require the user hold shift to sort by multiple columns, otherwise the grid would sort by only a single column.

https://docs.telerik.com/devtools/wpf/controls/radgridview/sorting/multiple-column-sorting

Unplanned
Last Updated: 09 Feb 2023 11:57 by Meindert
Created by: Meindert
Comments: 0
Category: Grid
Type: Bug Report
1

Hello,

Imagine a Grid with in-cell editing and a cell X, which restricts editing via IsCancellable = true in the OnEdit event.

If the user clicks on cell X, then editing will be cancelled and the focus will be on this cell.

If the user tabs from the previous cell, then editing will be cancelled and the focus will be on the previous cell.

This looks like an inconsistency. Can the focus go to cell X when editing is cancelled from a tab?

Unplanned
Last Updated: 04 Sep 2023 08:44 by ADMIN

When the Virtualization feature is enabled, triggering Incell edit causes the Grid to scroll. When we scroll the edit is canceled. This happens when the row is partially visible.
https://www.screencast.com/t/zCJ9z9P83c

A more specific case is when you try to edit the last row. In case the editor height is bigger than the row height the Grid tries to scroll but there is no more data. The editor is closed and the item cannot be edited.
https://www.screencast.com/t/331cT4xxt

Reproduction: https://blazorrepl.telerik.com/QxEcECvx22pq4BBG59

 

Duplicated
Last Updated: 30 Jun 2023 09:36 by ADMIN
Created by: Brent
Comments: 1
Category: Grid
Type: Feature Request
2

I'm trying to use the FilterMenu with the CheckBoxListFilter, and it seems like it's sooo close to what I want, if it only had an option for FieldText and FeildValue or something like that. Any way I can get this working to use the ID field as the value and the Name as the text? The highlighted section below is what I would envision it working perfectly as.

<GridColumn Field="@nameof(WorkActivity.WorkGroupId)" Title="Work Group" Width="135px">
            <FilterMenuTemplate Context="context">
                <TelerikCheckBoxListFilter Data="@WorkGroups"
                                           Field="@(nameof(WorkGroup.Name))" FieldValue="@(nameof(WorkGroup.Id))" 
                                           @bind-FilterDescriptor="@context.FilterDescriptor">
                </TelerikCheckBoxListFilter>
            </FilterMenuTemplate>
Unplanned
Last Updated: 25 Apr 2025 14:06 by ADMIN
Created by: Tobias
Comments: 7
Category: Grid
Type: Feature Request
37

Hello,

Please consider a Grid feature that changes the component layout on mobile devices or narrow screens. The idea is to switch the column layout to a card layout or anything similar to this example: https://css-tricks.com/responsive-data-tables/

It is possible to implement a similar behavior with the Telerik Blazor Grid and MediaQuery components, but it requires reusing the column titles in the CSS code: https://blazorrepl.telerik.com/GnYPmHFR176Jg5Yg02

===

Telerik Blazor team: Everyone who is interested in this feature, please vote for it to help us prioritize. Also, share your opinion about which Grid features you strictly need in the "mobile" layout and which ones you are ready to sacrifice. Some features don't make sense in a card / listview layout anyway, but still, the mobile-friendly Grid may require completely different HTML markup and UX, so some features may need to be completely revamped.

Unplanned
Last Updated: 27 Jan 2023 11:57 by Miroslav

Page Down and Page Up buttons are not working until the user clicks on the scroll when virtual scrolling is enabled.

To reproduce the issue:

1. Open the following REPL example:

https://blazorrepl.telerik.com/QHYPQVFv55nHGRWV59

2. Focus on the Grid.

3. Try to scroll with the PageDown button.

 

 

Unplanned
Last Updated: 23 Jan 2023 12:14 by Miroslav

Hello,

The filter row noticeably slows down the tabbing speed during Grid in-cell editing in WASM apps.

Completed
Last Updated: 20 Jan 2023 09:07 by ADMIN
Release 4.0.1

As of UI for Blazor 4.0. ExcelExportableColumn is inaccessible due to its protection level and GridExcelExportColumn should be used instead.

I am trying to add the hidden columns to the exported file through the OnBeforeExport event. However, I am unable to create an exportable column instance using the GridExcelExportColumn. I get the following error:

CS1729: GridExcelExportColumn does not contain a constructor that takes 0 arguments.

 

Completed
Last Updated: 08 Mar 2023 10:07 by ADMIN
Release 4.1.0 (15/03/2023)
Created by: Meindert
Comments: 2
Category: Grid
Type: Bug Report
2
Triggering edit mode leads to re-renders in other cells. 
Unplanned
Last Updated: 12 Jan 2023 09:19 by Peter
Created by: Peter
Comments: 0
Category: Grid
Type: Feature Request
1

Hello,

Please consider Grid data binding support for ImmutableArray. Currently, it crashes when the Grid tries to retrieve the total items count at:

Data.AsQueryable().Count();

Immutable*<T> classes are popular in state libraries.

Currently, the possible workarounds are:

  • Execute .ToArray() on the ImmutableArray and bind the Grid to the new array.
  • Bind the Grid to IReadOnlyCollection.
Unplanned
Last Updated: 18 Mar 2026 08:35 by ADMIN

If LoadGroupsOnDemand="false", I am able to programmatically expand the groups through the state. However, this is not possible when loading group data on demand.

Please allow programmatically expanding the groups when LoadGroupsOnDemand="true". This should go together with an event (OnStateChanged?) that will fire when LOD groups are expanded or collapsed.

Completed
Last Updated: 14 Nov 2024 09:28 by ADMIN
Release 7.0.0
Created by: Peter
Comments: 0
Category: Grid
Type: Feature Request
8

Feature Request

Currently, when a grid is rendered with 500 rows in a WASM application and expand/collapse action is initiated, it takes a few seconds to finish grouping and rendering. 

Steps to reproduce

1. Create a grid in WASM app.
2. Add 500 rows.
3. Do not enable paging.
4. Group by any field and initiate expand/collapse.
5. All rows are re-rendered which leads to a few seconds delay.

 

 

Unplanned
Last Updated: 21 Dec 2022 13:38 by ADMIN
Created by: Daniel
Comments: 0
Category: Grid
Type: Feature Request
2

A nice feature would be frozen Group Rows.

So if you grouped your data in the Grid and scroll. The Group should stick underneath the header.

As an example look here: https://www.ag-grid.com/angular-data-grid/grouping-sticky-groups/

Duplicated
Last Updated: 07 Feb 2024 11:23 by ADMIN
I would like to use customization options for the exported file when calling the export programmatically. 
Unplanned
Last Updated: 30 Nov 2022 13:47 by JeffVisibilEDI

I have applications for which I would like to define the default join operator for Grid filters to be "OR" instead of the default "AND."

Please expose an option to customize the default logical operator in Filter Menu.

Unplanned
Last Updated: 14 Feb 2025 06:21 by ADMIN

I AutoFit all columns in the Grid but would like to be able to reset their width to the initial value at a later point. 

===

TELERIK EDIT: Here are two workarounds for two possible scenarios:

  • Reset all column widths to another value or "auto" value.
  • Adjust the last column's width, so that there is no empty space after it.

Reset all column widths to another value or "auto" value

<TelerikButton ThemeColor="@ThemeConstants.Button.ThemeColor.Primary"
               OnClick="@AutoFitColumns">AutoFit Columns</TelerikButton>
<TelerikButton ThemeColor="@ThemeConstants.Button.ThemeColor.Success"
               OnClick="@ResetColumns">Reset Column Widths</TelerikButton>

<TelerikGrid @ref="@GridRef"
             Data="@GridData"
             Reorderable="true"
             Resizable="true">
    <GridColumns>
        <GridColumn Field="@nameof(Product.Id)" />
        <GridColumn Field="@nameof(Product.Name)" />
        <GridColumn Field="@nameof(Product.Category)" />
        <GridColumn Field="@nameof(Product.Stock)" />
        <GridColumn Field="@nameof(Product.Discontinued)" />
    </GridColumns>
</TelerikGrid>

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

    private List<Product> GridData { get; set; } = new();

    private async Task AutoFitColumns()
    {
        if (GridRef == null)
        {
            return;
        }

        await GridRef.AutoFitAllColumnsAsync();
    }

    private async Task ResetColumns()
    {
        if (GridRef == null)
        {
            return;
        }

        var gridState = GridRef.GetState();

        foreach (var columnState in gridState.ColumnStates)
        {
            columnState.Width = "auto;";
        }

        gridState.TableWidth = $"99.9{DateTime.Now.Millisecond}%"; // Set something close to 100% instead of removing the value

        await GridRef.SetStateAsync(gridState);
    }

    protected override void OnInitialized()
    {
        for (int i = 1; i <= 5; i++)
        {
            GridData.Add(new Product()
            {
                Id = i,
                Name = $"Product {i}",
                Category = $"Category {i % 4 + 1}",
                Stock = Random.Shared.Next(0, 100),
                Discontinued = i % 3 == 0
            });
        }
    }

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; } = string.Empty;
        public string Category { get; set; } = string.Empty;
        public int Stock { get; set; }
        public bool Discontinued { get; set; }
    }
}

Adjust the last column's width, so that there is no empty space after it

<TelerikGrid @ref="@GridRef"
             Data="@GridData"
             Reorderable="true"
             Resizable="true"
             Width="@GridWidth"
             ShowColumnMenu="true"
             OnStateChanged="@( (GridStateEventArgs<Product> args) => OnGridStateChanged(args) )">
    <GridColumns>
        <GridCheckboxColumn SelectAll="true" />
        <GridColumn Field="@nameof(Product.Id)" />
        <GridColumn Field="@nameof(Product.Name)" />
        <GridColumn Field="@nameof(Product.Category)" />
        <GridColumn Field="@nameof(Product.Stock)" />
        <GridColumn Field="@nameof(Product.Discontinued)" />
    </GridColumns>
</TelerikGrid>

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

    private List<Product> GridData { get; set; } = new();
    private string GridWidth => $"{GridIntWidth}px";

    private int GridIntWidth = 1000; // A pixel Grid width is required for this scenario
    private int GridMaxTableIntWidth => GridIntWidth - 17; // Assuming no horizontal scrolling

    private async Task OnGridStateChanged(GridStateEventArgs<Product> args)
    {
        if (args.PropertyName == "ColumnStates" && Double.Parse(args.GridState.TableWidth.Replace("px", "")) < GridMaxTableIntWidth)
        {
            args.GridState.TableWidth = $"99.9{DateTime.Now.Millisecond}%"; // Set something close to 100% instead of removing the value

            int lastVisibleColumnIndex = GetLastVisibleIndex(args.GridState.ColumnStates);
            args.GridState.ColumnStates.First(x => x.Index == lastVisibleColumnIndex).Width = "auto";

            await GridRef!.SetStateAsync(args.GridState);
        }
    }

    private int GetLastVisibleIndex(ICollection<GridColumnState> columnStates)
    {
        int index = 0;

        var visibleColumnStates = columnStates.Where(x => !x.Visible.HasValue || x.Visible.Value);

        foreach (var columnState in visibleColumnStates)
        {
            index = Math.Max(index, columnState.Index);
        }

        return index;
    }

    protected override void OnInitialized()
    {
        for (int i = 1; i <= 5; i++)
        {
            GridData.Add(new Product()
            {
                Id = i,
                Name = $"Product {i}",
                Category = $"Category {i % 4 + 1}",
                Stock = Random.Shared.Next(0, 100),
                Discontinued = i % 3 == 0
            });
        }
    }

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; } = string.Empty;
        public string Category { get; set; } = string.Empty;
        public int Stock { get; set; }
        public bool Discontinued { get; set; }
    }
}

Unplanned
Last Updated: 18 Aug 2023 15:43 by Greg
I would like to be able to use complex models (such as those generated from CSLA.NET) for the Grid. 
Unplanned
Last Updated: 16 Nov 2022 11:53 by Rac
I have a Grid whos cumulative column width exceeds the total width of the Grid. I would like to reorder a column outside of the current Grid viewport, but it is not currently available. 
Unplanned
Last Updated: 11 Nov 2022 11:36 by 剛

The Grid selection performance is worse in WASM when there is a command column. Here is a test page with a large page size, which makes this more evident.

<label><TelerikCheckBox @bind-Value="@ShowCommandColumn" /> Show Command Column</label>

<TelerikGrid Data="@DataList"
             SelectionMode="@GridSelectionMode.Single"
             Height="700px">
    <GridColumns>
        <GridColumn Field="@(nameof(DataModel.Pos))" Title="Pos" />
        @if (ShowCommandColumn)
        {
            <GridCommandColumn Width="300px">
                <GridCommandButton Command="Save" Icon="save">Reset Volume</GridCommandButton>
                <GridCommandButton Command="Delete" Icon="delete">Delete</GridCommandButton>
            </GridCommandColumn>
        }
    </GridColumns>
</TelerikGrid>

@code {

    bool ShowCommandColumn { get; set; } = true;

    List<DataModel> DataList { get; set; }

    protected override async Task OnInitializedAsync()
    {
        DataList = new List<DataModel>();
        for (int i = 1; i <= 500; i++)
        {
            DataList.Add(new DataModel
            {
                Pos = i
            });
        }
    }

    public class DataModel
    {
        public int Pos { get; set; }
    }
}

 

Completed
Last Updated: 14 Nov 2024 09:26 by ADMIN
Release 7.0.0

I have a Grid with Navigable="true" and FilterRow. If I focus a string filter input and press the left/right arrow keys, the focus moves away from the cell. This behavior also occurs when I press up/down arrows in numeric filter inputs.

Reproduction: https://blazorrepl.telerik.com/GcvPkekt36Mxgygv07