RadzenDataGrid, Grouping JToken #1666

Closed
opened 2026-01-29 17:56:58 +00:00 by claunia · 1 comment
Owner

Originally created by @Scnck on GitHub (Mar 13, 2025).

the following code worked until 5.9.9 any version greater breaks; am I doing something wrong or is there a bug with the latest versions of Radzen?

@page "/dynamic-data-grid"

@using Newtonsoft.Json
@using Newtonsoft.Json.Linq

<h1>Dynamic Data Grid with Grouping</h1>

<RadzenDataGrid Data="@data"
                Render="OnRender"
                GroupRowRender="OnGroupRowRender">
    <GroupHeaderTemplate>
        @context.GroupDescriptor.GetTitle()
    </GroupHeaderTemplate>
    <Columns>
        @foreach (var property in ((JObject)data.First()).Properties().Select(p => p.Name).ToList())
        {
            <RadzenDataGridColumn TItem="JToken"
                                  Property="@property"
                                  Title="@property">
                <Template>
                    <div>
                        @(context.Value<dynamic>(property)?.ToString())
                    </div>
                </Template>
            </RadzenDataGridColumn>
        }
    </Columns>
</RadzenDataGrid>

@code {
    bool? groupsExpanded;
    private JToken data = default!;

    protected override async Task OnInitializedAsync() => await LoadData();

    private async Task LoadData()
    {
        // Simulating JSON data (replace this with your actual JSON data source)
        string jsonString = @"[
            {""Id"": 1, ""Name"": ""John Doe"", ""Department"": ""IT"", ""Salary"": 75000},
            {""Id"": 2, ""Name"": ""Jane Smith"", ""Department"": ""HR"", ""Salary"": 65000},
            {""Id"": 3, ""Name"": ""Bob Johnson"", ""Department"": ""IT"", ""Salary"": 80000},
            {""Id"": 4, ""Name"": ""Alice Brown"", ""Department"": ""Finance"", ""Salary"": 70000},
            {""Id"": 5, ""Name"": ""Charlie Wilson"", ""Department"": ""HR"", ""Salary"": 62000}
        ]";

        // Parse the JSON string to a JToken
        data = await Task.FromResult(JToken.Parse(jsonString));
    }

    void OnRender(DataGridRenderEventArgs<JToken> args)
    {
        if (args.FirstRender)
        {
            args.Grid.Groups.Add(new GroupDescriptor() { Title = "Department", Property = "Department", SortOrder = SortOrder.Descending });
            StateHasChanged();
        }
    }

    void OnGroupRowRender(GroupRowRenderEventArgs args)
    {
        args.Expanded = groupsExpanded;
    }
}
Originally created by @Scnck on GitHub (Mar 13, 2025). the following code worked until 5.9.9 any version greater breaks; am I doing something wrong or is there a bug with the latest versions of Radzen? ``` @page "/dynamic-data-grid" @using Newtonsoft.Json @using Newtonsoft.Json.Linq <h1>Dynamic Data Grid with Grouping</h1> <RadzenDataGrid Data="@data" Render="OnRender" GroupRowRender="OnGroupRowRender"> <GroupHeaderTemplate> @context.GroupDescriptor.GetTitle() </GroupHeaderTemplate> <Columns> @foreach (var property in ((JObject)data.First()).Properties().Select(p => p.Name).ToList()) { <RadzenDataGridColumn TItem="JToken" Property="@property" Title="@property"> <Template> <div> @(context.Value<dynamic>(property)?.ToString()) </div> </Template> </RadzenDataGridColumn> } </Columns> </RadzenDataGrid> @code { bool? groupsExpanded; private JToken data = default!; protected override async Task OnInitializedAsync() => await LoadData(); private async Task LoadData() { // Simulating JSON data (replace this with your actual JSON data source) string jsonString = @"[ {""Id"": 1, ""Name"": ""John Doe"", ""Department"": ""IT"", ""Salary"": 75000}, {""Id"": 2, ""Name"": ""Jane Smith"", ""Department"": ""HR"", ""Salary"": 65000}, {""Id"": 3, ""Name"": ""Bob Johnson"", ""Department"": ""IT"", ""Salary"": 80000}, {""Id"": 4, ""Name"": ""Alice Brown"", ""Department"": ""Finance"", ""Salary"": 70000}, {""Id"": 5, ""Name"": ""Charlie Wilson"", ""Department"": ""HR"", ""Salary"": 62000} ]"; // Parse the JSON string to a JToken data = await Task.FromResult(JToken.Parse(jsonString)); } void OnRender(DataGridRenderEventArgs<JToken> args) { if (args.FirstRender) { args.Grid.Groups.Add(new GroupDescriptor() { Title = "Department", Property = "Department", SortOrder = SortOrder.Descending }); StateHasChanged(); } } void OnGroupRowRender(GroupRowRenderEventArgs args) { args.Expanded = groupsExpanded; } } ```
Author
Owner

@enchev commented on GitHub (Mar 14, 2025):

Check my reply in your forum post: https://forum.radzen.com/t/radzendatagrid-grouping-jtoken/19931/2

@enchev commented on GitHub (Mar 14, 2025): Check my reply in your forum post: https://forum.radzen.com/t/radzendatagrid-grouping-jtoken/19931/2
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/radzen-blazor#1666