Completed
Last Updated: 04 Aug 2021 17:02 by ADMIN
Created by: Matthias
Comments: 2
Category: Grid
Type: Bug Report
3

After the update I get the following error message:

/...Views/ViewRoute.razor(13,13): Error CS0012: The type 'SortDescriptor'is defined in an assembly that isnot referenced. You must add a reference to assembly 'Telerik.DataSource, Version=2.0.10.0, Culture=neutral, PublicKeyToken=29ac1a93ec063d92'. (CS0012)

the package is installed...nevertheless I get the error

<PackageReference Include="Telerik.UI.for.Blazor" Version="2.26.0" /> <PackageReference Include="Telerik.DataSource" Version="2.0.10" />

 

at this position
  GridState<Wegpunkte> desiredState = new GridState<Wegpunkte>()
        {
            SortDescriptors = new List<SortDescriptor>()
        {
                new SortDescriptor {Member = "TourPos", SortDirection = ListSortDirection.Ascending}
            }
        };
 
Unplanned
Last Updated: 09 Sep 2021 07:44 by ADMIN
I would like to recommend that a check box be added to the GridColumnMenuChooserGroup, so the entire group can be selected or deselected.  
Duplicated
Last Updated: 12 May 2022 17:03 by ADMIN
Created by: Jimmy
Comments: 1
Category: Grid
Type: Bug Report
3
Groups with load on demand cannot be deserialized properly and throw NullReferenceException
Completed
Last Updated: 03 Dec 2021 14:32 by ADMIN
Release 2.30.0
Created by: Radko
Comments: 0
Category: Grid
Type: Feature Request
3
I would like to be able to set constraints for min and max width for the draggable resizing introduced by the Resizable parameter of the Column. Meaning, if I set a min width of 50 pixels, I would like for the column to not be able to shrink beyond this point when manually resized by the draggable handle.
Unplanned
Last Updated: 28 Dec 2021 15:37 by Nemo
Created by: Nemo
Comments: 11
Category: Grid
Type: Feature Request
3

Hi, please expose the debounce delay as a property of TelerikGrid so we can set how soon virtualized columns are loaded after the user scrolls.

**Admin Edit**

This feature request requires research, and if such DebounceDelay parameter can work with good quality in all cases - it will be implemented. Additionally, we will revise the feature together with loading next set of columns if it will be applicable.

**Admin Edit**

Duplicated
Last Updated: 26 Apr 2022 10:51 by ADMIN
I have a record with id 1. In the OnEdit event, we check if the Edited item has Id == 1 and if so we cancel the edit. Now, the UI, if the Grid is in Read mode (not in Edit) clicking on the Grid cell that has Id == 1 does not trigger the edit, thus the editor is not rendered. On the other hand, if we open a previous cell that is editable and we click enter (tab) multiple times the non-editable cell will enter Edit mode and the editor is rendered.
Unplanned
Last Updated: 03 Dec 2021 10:40 by ADMIN
Selected items are not preserved when loading the state when the component is bound to ExpandoObjects
Completed
Last Updated: 11 Jan 2022 20:43 by ADMIN
Release 3.0.0

I have a filterable DropDownList in a Grid EditorTemplate. The edit mode is InCell.

When the user opens the dropdown, the edited cell closes immediately with an OnUpdate call. The DropDownList value can be changed only with the keyboard or if I disable DropDownList filtering.

===

The same problem occurs with any component that uses a popup and the popup can gain focus - ComboBox, ColorPicker, etc.

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: 26 May 2022 18:19 by ADMIN
Release 3.4.0

The exception is -

System.ArgumentNullException: Value cannot be null. (Parameter 'source')

Here is a test page, based on this one -

@using Telerik.DataSource
@using Telerik.DataSource.Extensions
@using System.IO

<TelerikGrid TItem="@object"
             LoadGroupsOnDemand="true"
             Groupable="true"
             OnStateInit="@((GridStateEventArgs<object> args) => OnStateInitHandler(args))"
             OnRead="@ReadItems"
             ScrollMode="@GridScrollMode.Virtual" PageSize="20" RowHeight="60"
             Navigable="true" Sortable="true" FilterMode="@GridFilterMode.FilterRow" Height="600px">
    <GridColumns>
        <GridColumn Field="@nameof(Employee.Name)" FieldType="@typeof(string)" Groupable="false" />
        <GridColumn Field="@nameof(Employee.Team)" FieldType="@typeof(string)" Title="Team" />
        <GridColumn Field="@nameof(Employee.Salary)" FieldType="@typeof(decimal)" Groupable="false" />
        <GridColumn Field="@nameof(Employee.IsOnLeave)" FieldType="@typeof(bool)" Title="On Vacation" />
    </GridColumns>
</TelerikGrid>

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

    protected async Task ReadItems(GridReadEventArgs args)
    {
        DataEnvelope<Employee> result = await MyService.GetData(args.Request);

        if (args.Request.Groups.Count > 0)
        {
            args.Data = result.GroupedData.Cast<AggregateFunctionsGroup>().ToList();
        }
        else
        {
            args.Data = result.CurrentPageData.Cast<Employee>().ToList();
        }

        args.Total = result.TotalItemCount;

        if (args.Request.Groups.Count > 0)
        {
            try
            {
                List<AggregateFunctionsGroup> items = result.GroupedData.Cast<AggregateFunctionsGroup>().ToList();

                await using var s = new MemoryStream();
                await System.Text.Json.JsonSerializer.SerializeAsync(s, items);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
    }

    void OnStateInitHandler(GridStateEventArgs<object> args)
    {
        // set initial grouping
        GridState<object> desiredState = new GridState<object>()
        {
            GroupDescriptors = new List<GroupDescriptor>()
    {
                new GroupDescriptor()
                {
                    Member = "Team",
                    MemberType = typeof(string)
                },
                new GroupDescriptor()
                {
                    Member = "IsOnLeave",
                    MemberType = typeof(bool)
                }
            }
        };

        args.GridState = desiredState;
    }

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public string Team { get; set; }
        public bool IsOnLeave { get; set; }
        public decimal Salary { get; set; }
    }

    public class DataEnvelope<T>
    {
        public List<AggregateFunctionsGroup> GroupedData { get; set; }
        public List<T> CurrentPageData { get; set; }
        public int TotalItemCount { get; set; }
    }

    public static class MyService
    {
        private static List<Employee> SourceData { get; set; }
        public static async Task<DataEnvelope<Employee>> GetData(DataSourceRequest request)
        {
            if (SourceData == null)
            {
                SourceData = new List<Employee>();
                var rand = new Random();
                for (int i = 1; i <= 2500; i++)
                {
                    SourceData.Add(new Employee()
                    {
                        EmployeeId = i,
                        Name = "Employee " + i.ToString(),
                        Team = "Team " + i % 100,
                        IsOnLeave = i % 3 == 0,
                        Salary = rand.Next(1000, 5000)
                    });
                }
            }

            await Task.Delay(500);// deliberate delay to showcase async operations, remove in a real app

            // retrieve data as needed, you can find more examples and runnable projects here
            // https://github.com/telerik/blazor-ui/tree/master/grid/datasourcerequest-on-server
            var datasourceResult = SourceData.ToDataSourceResult(request);

            DataEnvelope<Employee> dataToReturn;

            if (request.Groups.Count > 0)
            {
                dataToReturn = new DataEnvelope<Employee>
                {
                    GroupedData = datasourceResult.Data.Cast<AggregateFunctionsGroup>().ToList(),
                    TotalItemCount = datasourceResult.Total
                };
            }
            else
            {
                dataToReturn = new DataEnvelope<Employee>
                {
                    CurrentPageData = datasourceResult.Data.Cast<Employee>().ToList(),
                    TotalItemCount = datasourceResult.Total
                };
            }

            return await Task.FromResult(dataToReturn);
        }
    }
}

Declined
Last Updated: 25 Sep 2024 11:24 by ADMIN

   So what I propose is a fixed width for a column of the grid (and locked) with the remaining columns auto-sizing.

In my situation, I have an action switch button where the client can delete a row, edit a row etc but the action code dropdown column needs to ALWAYS be the same width.  The rest of the columns should automatically size based on the existing behaviour.

   Now I have tried using the autosize for just that column, but I have to render the grid first, then run the autosize (which gives a fun show of resizing to the user) then all the columns become fixed width, but the vertical scroll bar doesn't move and stays in its initial position.

 

 

Unplanned
Last Updated: 14 Aug 2023 08:23 by ADMIN
Created by: Hendrik
Comments: 0
Category: Grid
Type: Feature Request
3
Please allow the Grid to support in cell editing only via double click. This will give the possibility to preserve single clicks for selection.
Completed
Last Updated: 30 Jan 2024 13:48 by ADMIN
Release 2024 Q1 (Jan)

The filter list item menu defined as follows do not have accessible name.  Please provide work around or fix that I can implement.

                            <TelerikGrid Data="@ViewModel.RouterAndDataLossInformation" TItem="TrafficLossSummary"
                                                        Pageable="true" 
                                                        Sortable="true" 
                                                        Groupable="false"
                                                        FilterMode="Telerik.Blazor.GridFilterMode.FilterRow"
                                                        Resizable="true" 
                                                        Reorderable="true"
                                                        Height = "100%">

Unplanned
Last Updated: 21 Oct 2022 13:13 by ADMIN
Created by: Peter
Comments: 2
Category: Grid
Type: Feature Request
3

The `Context` of `<GridColumn>` is of type `object`, requiring typecasting in order to use the value.

Instead, make `<GridColumn>` generic so that `Context` is strongly typed.  If you use `TItem` as the name for the generic then Blazor will infer it without the user having to specify it.

 

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.

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.

 

Unplanned
Last Updated: 14 Feb 2023 10:55 by Tino

When I autofit all columns multiple times in a row, the Grid misbehaves and wraps longer column content in multiple lines. 

<AdminEdit>

As a workaround, set the MinResizableWidth parameter of the Grid columns that wrap their content.

</AdminEdit>

Unplanned
Last Updated: 30 May 2023 09:57 by ADMIN

Currently, the empty cells in the exported Excel file contain zero-length strings. As a result, the ISBLANK() function returns false for them while the cells essentially do not have content.

Please allow the empty Grid cells to be treated as blank in the exported Excel file.

===

ADMIN EDIT

===

For the time being, you may extend the formula to also check whether the length of the cell content is 0. For that purpose, you may use the LEN() function as suggested here:  https://learn.microsoft.com/en-us/office/troubleshoot/excel/isblank-function-return-false#workaround.

Unplanned
Last Updated: 28 Feb 2023 09:21 by Valentin
Created by: Valentin
Comments: 0
Category: Grid
Type: Feature Request
3

We found out during SQL profiling that when bound to an IQueryable (linked to DbContext) with pagination enabled, the Telerik data grid called SQL to count elements twice. This is not a pre-render problem as those deplicated queries are actually executed twice (one pair for each render).

Our simplified code:

<TelerikGrid TItem="Item"
             Data="_data"
             PageSize="10"
             Pageable="true"
             Sortable="true">
    <GridColumns>
        <GridColumn Field="@nameof(Item.Id)" />
        <GridColumn Field="@nameof(Item.Code)" />
    </GridColumns>
</TelerikGrid>

@code {
    [Inject] protected DbContext DbContext { get; set; }

    private IEnumerable<Item> _data;

    protected override void OnInitialized()
    {
        base.OnInitialized();
        _data = DbContext.Items
            .Select(x => new Item()
            {
                Id = x.Id,
                Code = x.Code
            });
    }
}

===

ADMIN EDIT:

There are two possible ways to avoid the double COUNT:

  • Enumerate the collection before binding the Grid. For example, call ToList().
  • Bind the Grid via OnRead event. This gives full control over the data binding process and possible optimizations.
Won't Fix
Last Updated: 07 Oct 2024 15:43 by ADMIN