Completed
Last Updated: 28 Apr 2022 22:37 by Neil
Release 1.1.0
Created by: Shaun
Comments: 2
Category: Grid
Type: Feature Request
7

Currently the blazor grid must be a specific, static height.  If one is not provided, the grid uses a default of 500px.

Kendo grid implementations in other UI frameworks allow for more flexibility in the height of the grid.  It would be great if the blazor implementation could support this as well. 

Two specific scenarios that are valueable:

1) Grid height adjusts to accomodate all of the items in the grid

For other kendo grid implementations, this is typically the case when "Scrollable" is set to false.   If there is a plan to allow toggling scrolling for the blazor grid, then I think that this would come along with that.

2) Ability to set grid height to 100%

With other kendo implementations this is normally done via CSS, and is useful for when you want a "full screen" grid.  This is normally combined with "Scrollable=true" and often combined with Pagination="true" as well.   Currently it's not possible to do this - since the height is defined on the k-grid element, it cannot be overridden with CSS.

Completed
Last Updated: 01 Dec 2020 16:04 by ADMIN
Release 2.19.0

On initialization of the Grid the oDataString is correct, but when I apply a Filter (through the FilterMenu) or apply a sort to a Grid column the ToODataString extension method throws with null reference exception. If the FilterMode is set to FilterRow or revert back to 2.16.0 everything works as expected. 

<AdminEdit>

This bug extends to the functionality of the FilterMenu as a feature and is not connected only to the ToODataString();

</AdminEdit>

Completed
Last Updated: 24 Nov 2021 12:40 by ADMIN

I am using EF on my backend and when I group I get an error like this one:

Unhandled exception rendering component: Processing of the LINQ expression '(GroupByShaperExpression:
      KeySelector: (t.FirstName), 
      ElementSelector:(EntityShaperExpression: 
          EntityType: Customer
          ValueBufferExpression: 
              (ProjectionBindingExpression: EmptyProjectionMember)
          IsNullable: False
      )
      )' by 'RelationalProjectionBindingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.
System.InvalidOperationException: Processing of the LINQ expression '(GroupByShaperExpression:
KeySelector: (t.FirstName), 
ElementSelector:(EntityShaperExpression: 
    EntityType: Customer
    ValueBufferExpression: 
        (ProjectionBindingExpression: EmptyProjectionMember)
    IsNullable: False
)
)' by 'RelationalProjectionBindingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.VisitExtension(Expression extensionExpression)
   at System.Linq.Expressions.Expression.Accept(ExpressionVisitor visitor)

 

and a lot more line through the EF Core expression classes.

-----

ADMIN EDIT

At the moment, it looks like there is an issue between EF, LINQ and GroupBy expressions that seems to be the origin of this. In a profiler, you can see that running a group expression does not even run a query against the database itself - this is the origin of the problem, and the subsequent paging operation is where an actual exception is thrown, but it points to the field that was used for grouping.

Considering that grouping has to pull all the data anyway, materializing the data from an IQueriable to an IEnumerable should solve the issue, even though it can be a performance hit - for relatively small data sets it may not be a significant problem.

    protected override void OnInitialized()
    {
        GridData = ProductService.GetProducts().ToList();
    }

 

----

Completed
Last Updated: 11 Oct 2019 12:22 by ADMIN
Release 2.2.0
Created by: Andrew
Comments: 1
Category: Grid
Type: Bug Report
7

Hello,

I want to have the TelerikGrid's "Add" command display a popup for the new record's details, in the same way that the "Edit" functionality does. However with:

        <TelerikGrid EditMode="popup">
            <TelerikGridToolBar>
                <TelerikGridCommandButton Command="Add" Icon="add">Add</TelerikGridCommandButton>

When I click "Add", the new blank row is shown within the grid identical to EditMode="inline", not as a popup. Is the "Add" functionality meant to work in popup mode?

Completed
Last Updated: 10 Feb 2020 15:40 by ADMIN
Release 2.7.0
Created by: Manu
Comments: 1
Category: Grid
Type: Feature Request
7

Please allow to set Group By fields at Design time, currently only user has control to Drag and drop to group.

we need feature to group by fixed set of columns and don't allow user to change the grouping, also need option to hide group collapse icons.

 

 

Completed
Last Updated: 09 Aug 2022 07:44 by ADMIN
Release 3.6.0 (14 Sep 2022) (R3 2022)
Field and Value properties from GridCommandEventArgs don't populate in Incell editing. Their value is always null and thus I cannot get information for the edited field.
Completed
Last Updated: 19 Feb 2020 11:12 by ADMIN
Release 2.8.0
Created by: Robert
Comments: 3
Category: Grid
Type: Bug Report
7

I have a simple Grid with custom detail template

    <Telerik.Blazor.Components.TelerikGrid Data="@GridData" FilterMode="Telerik.Blazor.GridFilterMode.FilterRow" >

        <GridColumns>
            <Telerik.Blazor.Components.GridCheckboxColumn Title="Selected"></Telerik.Blazor.Components.GridCheckboxColumn>
            <Telerik.Blazor.Components.GridColumn Title="Name" Filterable="true" Field="@nameof(GridItem.Text)"></Telerik.Blazor.Components.GridColumn>
            <Telerik.Blazor.Components.GridColumn Field="@nameof(GridItem.Date)" Filterable="true" Title="Date"></Telerik.Blazor.Components.GridColumn>
            <Telerik.Blazor.Components.GridColumn Field="@nameof(GridItem.Id)" Filterable="true" Title="Id"></Telerik.Blazor.Components.GridColumn>
            <Telerik.Blazor.Components.GridColumn Field="@nameof(GridItem.ParentIdValue)" Filterable="true" Title="Parent Id"></Telerik.Blazor.Components.GridColumn>
            <Telerik.Blazor.Components.GridColumn Field="@nameof(GridItem.HasChildren)" Filterable="true" Title="Has Children"></Telerik.Blazor.Components.GridColumn>
        </GridColumns>

        <DetailTemplate>
            <div>Custom Template</div>
        </DetailTemplate>

    </Telerik.Blazor.Components.TelerikGrid>

 

And here is what it looks like. Filters are moved one column to the left. When I remove DetailTemplate everything is ok.

 

Completed
Last Updated: 17 Sep 2019 12:16 by ADMIN
Release 2.0.0
Created by: Nic
Comments: 3
Category: Grid
Type: Feature Request
7

Hello there,

 

I am looking for the ability to display hierarchical data in the grid control similar to that available in the asp.net core grid: https://demos.telerik.com/aspnet-core/grid/hierarchy

 

Thanks!

Completed
Last Updated: 22 Feb 2024 13:31 by ADMIN
Release 2024 Q2 (May)
Created by: David
Comments: 0
Category: Grid
Type: Bug Report
7

When the Grid is databound via OnRead event, the initially displayed aggregates are wrong and take into account the first page only.

A possible workaround is to bind the Grid in OnAfterRenderAsync -

@using Telerik.DataSource
@using Telerik.DataSource.Extensions

<TelerikGrid @ref="@GridRef"
             OnRead="@OnGridRead"
             TItem="@Product"
             Pageable="true">
    <GridAggregates>
        <GridAggregate Field="@nameof(Product.Name)" Aggregate="@GridAggregateType.Count" FieldType="@(typeof(System.String))" />
    </GridAggregates>
    <GridColumns>
        <GridColumn Field="@nameof(Product.Name)" Title="Product Name">
            <FooterTemplate>
                @context.Count
            </FooterTemplate>
        </GridColumn>
        <GridColumn Field="@nameof(Product.Price)" />
        <GridColumn Field="@nameof(Product.ReleaseDate)" Title="Release Date" />
        <GridColumn Field="@nameof(Product.Active)" />
    </GridColumns>
</TelerikGrid>

@code {
    TelerikGrid<Product> GridRef { get; set; }
    List<Product> GridData { get; set; }

    bool ShouldBindGrid { get; set; }

    async Task OnGridRead(GridReadEventArgs args)
    {
        if (!ShouldBindGrid)
        {
            return;
        }

        await Task.Delay(200); // simulate network delay

        DataSourceResult result = GridData.ToDataSourceResult(args.Request);

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

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            // workaround for initial Grid aggregates
            ShouldBindGrid = true;
            GridRef.Rebind();
            StateHasChanged();
        }
    }

    protected override void OnInitialized()
    {
        GridData = new List<Product>();
        var rnd = new Random();

        for (int i = 1; i <= 50; i++)
        {
            GridData.Add(new Product()
            {
                Id = i,
                Name = "Product " + i.ToString(),
                Price = (decimal)rnd.Next(1, 100),
                ReleaseDate = DateTime.Now.AddDays(-rnd.Next(60, 1000)),
                Active = i % 3 == 0
            });
        }
    }

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
        public DateTime ReleaseDate { get; set; }
        public bool Active { get; set; }
    }
}

Completed
Last Updated: 15 Aug 2023 14:10 by ADMIN
Release 4.5.0 (08/30/2023) (R3 PI2)

When the Grid has a non-grouped column at first position, there is a missing left border in an adjacent cell on the second line of the header area.

First reported in:

https://www.telerik.com/forums/multi-column-line-in-grid-occasionally-missing

Possible workarounds:

  • Move the non-grouped column to another position.
  • Wrap the non-grouped column in its own group.

Test page to reproduce:

(Uncomment the group column to use the second workaround from above.)

<TelerikGrid Data="@Data">
    <GridColumns>
        @*<GridColumn Title="Title">
        <Columns>*@
            <GridColumn Field="ID" />
        @*</Columns>
        </GridColumn>*@
        <GridColumn Title="Group">
            <Columns>
                <GridColumn Field="Name" />
            </Columns>
        </GridColumn>
    </GridColumns>
</TelerikGrid>

@code {

    public List<GridItem> Data { get; set; } = new List<GridItem>() {
        new GridItem() { ID = 1, Name = "Name 1" }
    };

    public class GridItem
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
}

 

Completed
Last Updated: 17 Jan 2022 18:59 by ADMIN
Release 3.0.0

Grid virtual scrolling will freeze in the following scenario:

  1. Open https://demos.telerik.com/blazor-ui/grid/virtual-scrolling
  2. Scroll to the lower part of the Grid
  3. Filter any column, so that the number of items becomes less than the current scroll position
  4. The Grid will show "no records to display" and row placeholders, even if there are items to display

 

Completed
Last Updated: 10 Mar 2020 11:10 by ADMIN
Release 2.9.0

At the moment the numeric and date filters keep the filter button visible even on narrow columns. This must be implemented for the string filter as well - it has a set width at the moment.

The "clear filter" button must always be visible as well (when there is a filter applied, of course).

Ideally, the filter elements will also have a common container with an accessible class so, for example, you can set its max-width to 50% or 100px to match desired UI easily without hacking through several different layouts and selectors.

Completed
Last Updated: 02 Dec 2021 10:06 by ADMIN
Release 2.30.0

Using the Excel Export for Grid creates the Excel file, but on opening it, the columns that contain data are hidden. Unless I unhide the columns, the sprceadsheet looks empty.

---
ADMIN EDIT:
One idea to go about this is to expose an event that would allow users to modify the column width values before they get sent for export. The benefit of this approach is that if the columns are resized, the user will receive their current size in the specified unit e.g. rem, em or % and will be able to set the width in px.

Another idea is to default such column widths to some hardcoded value (say, 64px) or even the grid might try to calculate them (which can cause questionable results in stranger settings, but it is an idea - if an event gets exposed you will be able to do that in your application code).

---

Completed
Last Updated: 29 Nov 2021 13:23 by ADMIN
Release 2.30.0
Created by: Dan Stevens
Comments: 0
Category: Grid
Type: Feature Request
6

Horizontal scroll bar is visible, but doesn't move with cursor/current-cell.

---

ADMIN EDIT

Applies also to vertical scrolling with or without row virtualization (e.g., using InCell edit mode, pressing Enter will open the next row for editing, but it will not work out with row virtualization at all after the current viewport, and without virtualization you will not see what's happening until you start typing and the browser calls .scrollIntoView() for the editor)

---

Completed
Last Updated: 28 Jul 2023 08:12 by ADMIN
Created by: n/a
Comments: 3
Category: Grid
Type: Feature Request
6
Would like a parameter in the grid definition that would display a Clear/Refresh button to return the grid to all originally selected records.  This feature would work similar to the Excel clear filter function.  
Completed
Last Updated: 26 Oct 2020 13:34 by ADMIN
Release 2.19.0

Example Repo - https://github.com/benhysell/BlazorGridPagingIssue

tldr - OnRead args do not contain the correct page after restoring state without manual intervention.

 

Project Setup

  • Base Blazor Client/Server template with Weather Forecasts as the data
  • Server has a single OData endpoint to return 50 weather forecasts.  Each forecast starts with Temperature 0 and adds 1 per row to allow one to know which page they should be on
  • Client has two pages configured, 'Paging NOT Working' and 'Paging Work Around'

Steps to Reproduce

  • Navigate to 'Page NOT Working', select a page, i.e. page 5, navigate to the Counter page, navigate back to Page NOT Working.
  • Grid will show Page 5 in the page selector, however the data being show in from Page 1
  • Looking at Chrome 'Network' tab the OData query to obtain data from the backend does not contain proper offset for Page 5 data
  • args.Request.Page reports Page 1, however the state of the Grid was just restored to Page 5

Workaround

I currently have a work around, this can be seen in the other page 'Paging Work Around'.

  • On the first call to OnRead I check to see the last Grid state that was stored
  • If the arg.GridState.Page does not match, (Stored vs the Request) I update the Request with the proper Page
  • Proper OData query is generated to the backend.

Expected Behavior

  • After state is restored first call to OnRead() would report the proper Page and make correct OData call.
Completed
Last Updated: 27 Oct 2021 08:49 by ADMIN
Release 2.28.0
Created by: Jack
Comments: 1
Category: Grid
Type: Bug Report
6
When the text of the column header is long enough or the column narrow enough, the filter menu icon overlaps the text.
Completed
Last Updated: 31 May 2022 14:16 by ADMIN
Release 3.4.0

The Grid OnEdit event cannot be cancelled if the user tabs into a cell that should not allow editing.

REPL test page: https://blazorrepl.telerik.com/QcERELbm37c9SzzZ32

Click on "Foo 2" or "Bar 2", and start tabbing. You will be able to edit the values on row 3, which should not happen.

There are two possible workarounds: use a conditional EditorTemplate, or check editability in OnUpdate.

<TelerikGrid Data="@GridData" EditMode="@GridEditMode.Incell" Navigable="true"
             OnEdit="@EditItem" OnUpdate="@UpdateItem">
    <GridColumns>
        <GridColumn Field="@nameof(GridModel.Foo)" Title="Foo (bug)" />
        <GridColumn Field="@nameof(GridModel.Bar)" Title="Bar (workaround)">
            @*<EditorTemplate>
                @{
                    var item = context as GridModel;
                    // workaround 1
                    if (item.IsEditable)
                    {
                        <TelerikTextBox @bind-Value="@item.Bar" />
                    }
                    else
                    {
                        <span class="k-textbox k-input k-rounded-md">
                            <input class="k-input-inner" tabindex="0" readonly value="@item.Bar" />
                        </span>
                    }
                }
            </EditorTemplate>*@
        </GridColumn>
        <GridColumn Field="@nameof(GridModel.IsEditable)" Title="Is Row Editable?" Editable="false" />
    </GridColumns>
</TelerikGrid>

@code {
    List<GridModel> GridData { get; set; }

    void EditItem(GridCommandEventArgs args)
    {
        GridModel item = args.Item as GridModel;
        if (!item.IsEditable)
        {
            args.IsCancelled = true;
        }
    }

    void UpdateItem(GridCommandEventArgs args)
    {
        var argsItem = args.Item as GridModel;
        var index = GridData.FindIndex(i => i.Id == argsItem.Id);
        // workaround 2
        //if (index != -1 && argsItem.IsEditable)
        //{
            GridData[index] = argsItem;
        //}
    }

    protected override void OnInitialized()
    {
        GridData = new List<GridModel>();

        for (int i = 1; i <= 5; i++)
        {
            GridData.Add(new GridModel()
            {
                Id = i,
                Foo = "Foo " + i.ToString(),
                Bar = "Bar " + i.ToString(),
                IsEditable = i % 2 == 0
            });
        }
    }

    public class GridModel
    {
        public int Id { get; set; }
        public string Foo { get; set; }
        public string Bar { get; set; }
        public bool IsEditable { get; set; }
    }
}

 

Completed
Last Updated: 24 May 2021 10:02 by ADMIN
Release 2.22.0
At the moment it is not allowed, but I would like to freeze a few columns in the 100 columns that I have, and I use column virtualization for.
Completed
Last Updated: 27 Aug 2019 12:34 by ADMIN
Release 1.6.0
Created by: Rick
Comments: 1
Category: Grid
Type: Feature Request
5
Does the grid support groups and group headers? Didn't see an example.