Unplanned
Last Updated: 13 Apr 2022 07:16 by ADMIN

I would like to request a simple update to the Grid component.

When a column width is too small - the column header text is cut-off or is unreadable.

For example:

It would be nice that on mouse hover, the full title would be rendered. Currently to achieve this, I have to implement a custom <HeaderTemplate> for every grid column and add a span myself:

<GridColumn Field="@nameof(SalesOrderLineItem.Quantity)">
    <HeaderTemplate>
        <span title="Order Quantity">Order Quantity</span>
    </HeaderTemplate>
</GridColumn>

 

Can you update the GridColumn component and add a title attribute to the column <th> element so the browser can show the fill title should the user hover over it?

 

Declined
Last Updated: 13 Apr 2022 13:25 by ADMIN
Created by: Nicholas
Comments: 3
Category: Grid
Type: Feature Request
1

Internally it looks like you are using RadSpreadStreamProcessing for grid.ExportToExcelAsync()  if you gave us an optional lamdba to manipulate IRowExporter while you are processing, it would make things a lot easier.

There were a couple other feature requests out there that you closed offering alternatives ways of doing this and we are actually just importing the stream back to RadSpreadProcessing object and then manipulating that way.  Adding the Lambda would be a much more efficient way of handling this use case and probably very simple for you to implement.

 

 

Completed
Last Updated: 19 May 2022 11:39 by ADMIN
I would like to see a smaller amount of data traveling over the wide in the server-side blazor app when I page the grid.
Completed
Last Updated: 29 Mar 2022 14:20 by ADMIN
Release 3.2.0
Created by: Gary
Comments: 0
Category: Grid
Type: Bug Report
1

Grouping by a nested (child) Grid column is not possible in OnStateInit.

A possible workaround is to group in OnAfterRenderAsync.

@using Telerik.DataSource

<TelerikGrid Data=@GridData @ref="TheGrid"
             Groupable="true"
             OnStateInit="@((GridStateEventArgs<User> args) => OnStateInitHandler(args))">
    <GridColumns>
        <GridColumn Title="Personal Information">
            <Columns>
                <GridColumn Field=@nameof(User.LName) Title="Last Name" />
                <GridColumn Field=@nameof(User.FName) Title="First Name" />
            </Columns>
        </GridColumn>
        <GridColumn Title="Status and Last Login">
            <Columns>
                <GridColumn Field=@nameof(User.StatusName) Title="StatusName" />
                <GridColumn Field=@nameof(User.LastLoginDate) Title="Last Login" DisplayFormat="{0:yyyy-MMM-dd}" />
            </Columns>
        </GridColumn>
    </GridColumns>
</TelerikGrid>

@code {
    TelerikGrid<User> TheGrid { get; set; }
    List<User> GridData { get; set; }

    protected override void OnInitialized()
    {
        var data = new List<User>();
        for (int i = 1; i <= 20; i++)
        {
            data.Add(new User()
            {
                Id = i,
                FName = "First Name " + i,
                LName = "Last Name " + i,
                StatusId = i * 123,
                LastLoginDate = DateTime.Now,
                StatusName = "Status Name " + (i % 5 + 1)
            });
        }
        GridData = data;
    }

    private void OnStateInitHandler(GridStateEventArgs<User> args)
    {
        GridState<User> desiredState = new GridState<User>()
        {
            GroupDescriptors = new List<GroupDescriptor>()
            {
                new GroupDescriptor()
                {
                    Member = nameof(User.StatusName),
                    MemberType = typeof(string)
                }
            }
        };

        // will trigger an exception if grouping by a nested column
        args.GridState = desiredState;
    }

    @*protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            var desiredState = TheGrid.GetState();

            desiredState.GroupDescriptors = new List<GroupDescriptor>()
            {
                new GroupDescriptor()
                {
                    Member = nameof(User.StatusName),
                    MemberType = typeof(string)
                }
            };

            await TheGrid.SetState(desiredState);
        }

        await base.OnAfterRenderAsync(firstRender);
    }*@

    public class User
    {
        public long Id { get; set; }

        public int StatusId { get; set; }
        public string StatusName { get; set; }

        public string FName { get; set; }
        public string LName { get; set; }

        public DateTime LastLoginDate { get; set; }
    }
}

Unplanned
Last Updated: 24 Mar 2022 09:29 by Gabriele
Created by: Gabriele
Comments: 0
Category: Grid
Type: Feature Request
6

Allow the Grid to support Enums which are mapped to use datatypes different from int. Currently, if I try to use the following Enum, an InvlidCastException is generated:

public enum ShortEnum : short
{
    Value1,
    Value2,
    Value3
}

Completed
Last Updated: 29 Mar 2022 15:37 by ADMIN
Release 3.2.0
Created by: pihi
Comments: 0
Category: Grid
Type: Bug Report
1

Column resizing does not work correctly together with filter row and detail template.

Resize the second or the third column to any direction. The first column will shrink to the same width, as the expand column.

This broke in version 2.24.

<TelerikGrid FilterMode="Telerik.Blazor.GridFilterMode.FilterRow"
             Data="@GridData"
             Resizable="true">
    <DetailTemplate>
        detail template
    </DetailTemplate>
    <GridColumns>
        <GridColumn Field="Id" />
        <GridColumn Field="Id" Title="Resize Me First" />
        <GridColumn Field="Id" Title="Resize Me First" />
    </GridColumns>
</TelerikGrid>

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

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

        for (int i = 1; i <= 3; i++)
        {
            data.Add(new GridModel { Id = i });
        }

        GridData = data;
    }

    public class GridModel
    {
        public int Id { get; set; }
    }
}

Unplanned
Last Updated: 16 Mar 2022 14:07 by Greg

Does the Blazor grid have any support for any or all queries on sub-property collections? I would like to have the grid OnRead be able to generate a query against a sub-entity collection.

E.g.

GET serviceRoot/People?$filter=Emails/any(s:endswith(s, 'contoso.com'))

From what I can tell the Column.FieldName property only will generate a valid query for scalar properties. Is there any way to make this work?

Given the Northwind OData sample https://demos.telerik.com/kendo-ui/service-v4/odata. I would like to display a grid of all customers. In the grid, I would like to have a column that provides filtering for the orders shipper column as in the query below.

https://demos.telerik.com/kendo-ui/service-v4/odata/Customers?$expand=Orders&$filter=Orders/any(d: contains(d/Shipper/CompanyName,'Speedy Express'))

There does not seem to be a way for the in-built filter mechanism to use a lambda and it seems like there should be.

Unplanned
Last Updated: 16 Mar 2022 10:31 by ADMIN

When you type something in the grid searchbox, there will be a X at the end to clear the box.

However, if you restore the grid from previously stored state like localstorage, and if the box has value, the X is not there.

Thanks!

Completed
Last Updated: 17 Mar 2022 15:48 by ADMIN
Release 3.2.0
Created by: Frank
Comments: 0
Category: Grid
Type: Bug Report
1

Hello,

My Grid is setting filters in OnStateInit. Then, the filters are cleared via GridRef.SetState(null)

This used to work until 3.0.1, but not in 3.1.0. Here is a test page:

https://blazorrepl.telerik.com/mmEdFnvA31osNnjO20
Completed
Last Updated: 29 Mar 2022 14:30 by ADMIN
Release 3.2.0
NullReferenceException with OnRead + LoadGroupsOnDemand
Completed
Last Updated: 28 Dec 2023 08:50 by ADMIN
Release 5.1.0 (31 Jan 2024) (R1 2024)
Created by: Puneet
Comments: 4
Category: Grid
Type: Feature Request
24
Hi, I am looking for a Cell Click event in a grid to find out on which cell is exactly clicked.
Completed
Last Updated: 21 Mar 2022 11:57 by ADMIN
Release 3.2.0
Created by: John
Comments: 0
Category: Grid
Type: Bug Report
1

https://blazorrepl.telerik.com/QGadEnbT24qbDh1G49

If the window component does not implement a Width parameter, it will seem like docked to right when dragging. The issue stems from the update of top and left styles while the width of the component grows with them.

1. Open the repl

2. Initiate dragging

**Workaround**

Set the Width parameter of the Window component

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; }
    }
}

 

Won't Fix
Last Updated: 08 Feb 2024 14:01 by ADMIN
Created by: Guy
Comments: 1
Category: Grid
Type: Bug Report
1
The MemberType is sometimes not populated correctly
Unplanned
Last Updated: 02 Mar 2022 11:47 by Duncan
When the popup is larger than the browser/screen size, scrolling causes the popup to suddenly close
Unplanned
Last Updated: 03 Mar 2022 13:06 by ADMIN
Created by: Nemo
Comments: 5
Category: Grid
Type: Bug Report
1

Hi, how to show a pointer cursor while mouse over the group arrow icon? I could probably set style="cursor: pointer", but just wondering if there is any other approach. Thanks.

Unplanned
Last Updated: 16 Feb 2022 11:25 by Michel
When the user enters edit mode, the OnStateChanged event fires twice with PropertyName equal to "OriginalEditItem".
Completed
Last Updated: 11 Feb 2022 08:18 by ADMIN
Release 3.1.0
Created by: Marcus
Comments: 0
Category: Grid
Type: Bug Report
1

Hello,

If the Grid has X columns at first, and then it renders Y more columns, the new Y columns will not be resizable. Here is a test page.

A possible workaround is to define all columns initially, but hide some of them with Visible="false".

This worked in 2.29 and broke in 2.30.

Unplanned
Last Updated: 21 Apr 2023 19:54 by Frank
When you have Sortable set to true and you click on the header, the sorting direction goes from ascending to descending to neutral. I would like to configure my Grid so that when clicking on the header the sorting direction will start from descending, go to neutral, and after that to ascending or any other order. 
Completed
Last Updated: 01 Feb 2022 11:16 by ADMIN
Release 3.1.0
Created by: Vitro
Comments: 1
Category: Grid
Type: Bug Report
2

If you create a second Grid on the page, it will clear the SearchBox input value of the first Grid.

<p><TelerikButton OnClick="@ToggleSecondGrid">Toggle Second Grid</TelerikButton></p>

<TelerikGrid Data="@GridData">
    <GridToolBar>
        <GridSearchBox />
    </GridToolBar>
    <GridColumns>
        <GridColumn Field=@nameof(Product.ProductName) Title="Product Name" />
    </GridColumns>
</TelerikGrid>

@if (ShowSecondGrid)
{
    <TelerikGrid Data="@( new List<Product>() )">
        <GridColumns>
            <GridColumn />
        </GridColumns>
    </TelerikGrid>
}

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

    bool ShowSecondGrid { get; set; }

    async Task ToggleSecondGrid()
    {
        ShowSecondGrid = !ShowSecondGrid;
    }

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

        for (int i = 1; i <= 5; i++)
        {
            GridData.Add(new Product()
            {
                ProductId = i,
                ProductName = "Product " + i.ToString(),
                UnitPrice = (decimal)(i * 3.14),
                UnitsInStock = (short)(i * 1),
                Discontinued = false
            });
        }
    }

    public class Product
    {
        public int ProductId { get; set; }
        public string ProductName { get; set; }
        public decimal? UnitPrice { get; set; }
        public short? UnitsInStock { get; set; }
        public bool Discontinued { get; set; }
    }
}