Unplanned
Last Updated: 16 Oct 2025 06:45 by Niraj
When using the PivotGrid configurator, selecting Sort Ascending or Sort Descending toggles the sort direction between ascending and descending each time it’s clicked. This behavior is inconsistent with the menu label and can confuse users expecting a one-way sort action.
Unplanned
Last Updated: 07 Oct 2025 08:08 by Niraj
Created by: Niraj
Comments: 0
Category: PivotGrid
Type: Bug Report
1

The PivotGrid layout and cell alignment break when filtering expanded child columns by a value that exists only in some of the columns.

Here is a test page:

  1. Expand 2024 and 2025.
  2. Filter Month by a month name, which exists only in on the of two years. At the time of writing, this is "November".
  3. Observe how the first cell in the header row has a larger colspan (2 instead of 1), so the header cells are misaligned with the data cells.
<TelerikPivotGridContainer>
    <TelerikPivotGridConfiguratorButton></TelerikPivotGridConfiguratorButton>
    <TelerikPivotGridConfigurator></TelerikPivotGridConfigurator>
        <TelerikPivotGrid Data="@PivotGridData" DataProviderType="@PivotGridDataProviderType.Local"
                          @ref="PivotGridRef" ColumnHeadersWidth="100px" RowHeadersWidth="130px">
            <ColumnHeaderTemplate>
                @{
                    var ctx = (PivotGridColumnHeaderTemplateContext)context;
                    int underscoreIndex = ctx.Text.IndexOf("-");
                    string text = ctx.Text;
                    if (underscoreIndex > 0)
                    {
                        text = text.Replace(text.Substring(0, underscoreIndex + 1), "");
                        <span>@text</span>
                    }
                    else
                    {
                        <span>@ctx.Text</span>
                    }
                }
            </ColumnHeaderTemplate>

            <DataCellTemplate Context="dataCellContext">
                @{
                    var c = (PivotGridDataCellTemplateContext)dataCellContext;
                    var amt = c.Value == null ? (0m).ToString("C2") : ((decimal)c.Value).ToString("C2");
                }
                <div style="text-align: right;">
                    @amt
                </div>
            </DataCellTemplate>

            <PivotGridRows>
                <PivotGridRow Name="@nameof(PivotGridModel.Station)" Title="Station" />
            </PivotGridRows>

            <PivotGridColumns>
                <PivotGridColumn Name="@nameof(PivotGridModel.Year)" Title="Year" HeaderClass="year-header" />
                <PivotGridColumn Name="@nameof(PivotGridModel.MonthName)" Title="Month" />
            </PivotGridColumns>

            <PivotGridMeasures>
                <PivotGridMeasure Name="@nameof(PivotGridModel.Rate)" Title="Total"
                                  Aggregate="@PivotGridAggregateType.Sum" />
            </PivotGridMeasures>
        </TelerikPivotGrid>
</TelerikPivotGridContainer>

@code
{
    private TelerikPivotGrid<PivotGridModel>? PivotGridRef { get; set; }

    private List<PivotGridModel> PivotGridData { get; set; } = new();

    protected override async Task OnInitializedAsync()
    {
        var dataItemCount = 10000;
        var stationCount = 30;
        var rnd = Random.Shared;

        for (int i = 1; i <= dataItemCount; i++)
        {
            var stationNumber = rnd.Next(1, stationCount);

            PivotGridData.Add(new PivotGridModel()
            {
                Station = $"Station {stationNumber}",
                ContractMonth = DateTime.Today.AddMonths(-rnd.Next(0, 13)),
                Rate = rnd.Next(123, 987) * 1.23m
            });
        }

        PivotGridRef?.Rebind();

        await base.OnInitializedAsync();
    }

    public class PivotGridModel
    {
        public DateTime ContractMonth { get; set; }
        public int Year => ContractMonth.Year;
        public int Month => ContractMonth.Month;
        public string MonthName => $"{Month}-{ContractMonth.ToString("MMMM")}";
        public string Station { get; set; } = string.Empty;
        public decimal? Rate { get; set; }
    }
}

 

Unplanned
Last Updated: 01 Oct 2025 07:31 by ADMIN
Created by: Niraj
Comments: 1
Category: PivotGrid
Type: Bug Report
1
When selecting a field in the PivotGrid Configurator and then clicking the Cancel button, the field remains applied to the PivotGrid (row/column). The cancel operation does not remove it right away.
Unplanned
Last Updated: 01 Oct 2025 06:08 by Niraj
Created by: Niraj
Comments: 0
Category: PivotGrid
Type: Bug Report
1
The PivotGrid row and column filtering is case sensitive. This makes the algorithm inconsistent with the other filtering features in Telerik UI for Blazor.
Unplanned
Last Updated: 30 Sep 2025 09:27 by Thomas
Created by: Thomas
Comments: 2
Category: PivotGrid
Type: Feature Request
2

It would be nice to be able to customize the comparer used to display data in a specific order.

I think by default it uses a simple alphabetic comparison

But we have a lot of data using alpha and numeric information like:

  • Label1
  • Label2
  • ...
  • Label100

And the user wants data in the numeric order, so we often implement our own comparer everywhere for it to work.

The PivotGrid doesn't seem to provide a way to customize the order of data even with a provider Local, ordering the source in a specific way before giving it to the component doesn't work either.

Thanks
Thomas

Completed
Last Updated: 12 Jun 2025 07:18 by ADMIN
Release 2025 Q3 (Aug)

The Expand/Collapse icon of the PivotGrid is always a font one. I am using SVG icons in my app and I don't see the any icon in the toggle button.

===

ADMIN EDIT

===

A workaround for the time being is to register the Font icons stylesheet even if you are using SVG icons.

Under Review
Last Updated: 23 Apr 2025 12:19 by ADMIN
Created by: Kendo UI Support
Comments: 1
Category: PivotGrid
Type: Feature Request
1
If we set the model property to internal, it will change the behaviour of the serialization of the response behind the scenes.

This means I should reiterate the data and create a new object to remove the unwanted property. This is a waste of memory usage, isn't it more efficient if we tell the library to decide which fields to show or not?
Declined
Last Updated: 16 Apr 2025 06:50 by Meindert
Created by: Stefan
Comments: 2
Category: PivotGrid
Type: Feature Request
2

hello

please add support for bind pivotgrid to datatable or expando objects (local mode)

Unplanned
Last Updated: 26 Feb 2025 09:21 by Mate

The PivotGrid supports multiple Measures for the same Field on initial load. However, if the user makes a change in the configurator, then only the first Measure per Field remains visible.

===

TELERIK edit: Apart from not using a PivotGrid configurator, another possible workaround is to use custom UI instead of a configurator. Recreate the component to apply the changes:

<label class="k-checkbox-label">
    <TelerikCheckBox @bind-Value="@ShowCity"
                     OnChange="@OnPivotGridConfigurationChanged" />
    Show City Column
</label>
<label class="k-checkbox-label">
    <TelerikCheckBox @bind-Value="@ShowProduct"
                     OnChange="@OnPivotGridConfigurationChanged" />
    Show Product Row
</label>

@if (RenderPivotGrid)
{
    <TelerikPivotGrid Data="@PivotData"
                      DataProviderType="@PivotGridDataProviderType.Local"
                      ColumnHeadersWidth="240px">
        <PivotGridColumns>
            <PivotGridColumn Name="@nameof(PivotModel.Country)" Title="Country" />
            @if (ShowCity)
            {
                <PivotGridColumn Name="@nameof(PivotModel.City)" Title="City" />
            }
        </PivotGridColumns>
        <PivotGridRows>
            <PivotGridRow Name="@nameof(PivotModel.Category)" Title="Category" />
            @if (ShowProduct)
            {
                <PivotGridRow Name="@nameof(PivotModel.Product)" />
            }
        </PivotGridRows>
        <PivotGridMeasures>
            <PivotGridMeasure Name="@nameof(PivotModel.ContractValue)"
                              Title="Contract Value"
                              Aggregate="@PivotGridAggregateType.Sum" />
            <PivotGridMeasure Name="@nameof(PivotModel.ContractValue)"
                              Title="Contract Value"
                              Aggregate="@PivotGridAggregateType.Average" />
            <PivotGridMeasure Name="@nameof(PivotModel.ContractProfit)"
                              Title="Contract Value"
                              Aggregate="@PivotGridAggregateType.Sum" />
            <PivotGridMeasure Name="@nameof(PivotModel.ContractProfit)"
                              Title="Contract Value"
                              Aggregate="@PivotGridAggregateType.Average" />
        </PivotGridMeasures>
    </TelerikPivotGrid>
}

@code {
    private List<PivotModel> PivotData { get; set; } = new List<PivotModel>();

    private bool RenderPivotGrid { get; set; } = true;

    private bool ShowCity { get; set; }
    private bool ShowProduct { get; set; }

    private async Task OnPivotGridConfigurationChanged()
    {
        RenderPivotGrid = false;
        await Task.Delay(1);
        RenderPivotGrid = true;
    }

    protected override void OnInitialized()
    {
        var dataItemCount = 100;
        var categoryCount = 2;
        var productCount = 4 + 1;
        var countryCount = 2;
        var cityCount = 4 + 1;
        var rnd = Random.Shared;

        for (int i = 1; i <= dataItemCount; i++)
        {
            var productNumber = rnd.Next(1, productCount);
            var cityNumber = rnd.Next(1, cityCount);

            PivotData.Add(new PivotModel()
            {
                Category = $"Category {productNumber % categoryCount + 1}",
                Product = $"Product {productNumber}",
                Country = $"Country {cityNumber % countryCount + 1}",
                City = $"City {cityNumber}",
                ContractDate = DateTime.Now.AddDays(-rnd.Next(1, 31)).AddMonths(-rnd.Next(1, 12)).AddYears(-rnd.Next(0, 5)),
                ContractValue = rnd.Next(456, 987),
                ContractProfit = rnd.Next(43, 98)
            });
        }

        base.OnInitialized();
    }

    public class PivotModel
    {
        public string Category { get; set; } = null!;
        public string Product { get; set; } = null!;
        public string Country { get; set; } = null!;
        public string City { get; set; } = null!;
        public DateTime ContractDate { get; set; }
        public decimal ContractValue { get; set; }
        public decimal ContractProfit { get; set; }
    }
}

Unplanned
Last Updated: 21 Feb 2025 13:35 by Ho
Created by: Ho
Comments: 0
Category: PivotGrid
Type: Feature Request
5
Please add the ability to expand rows automatically on initial load.
Unplanned
Last Updated: 10 Jan 2025 10:13 by Ho

When using local data binding, all defined PivotGrid measures are checked by default and render in the Grid.

Please provide the ability to define measures, which are not checked and visible in the Grid area by default.

Unplanned
Last Updated: 09 Jan 2025 12:38 by ADMIN
Created by: Thang Cam
Comments: 0
Category: PivotGrid
Type: Feature Request
2
I want to open a modal dialog to show more detail when the user clicks on a cell in the Pivot Table. I am developing the Pivot which the user can click on the cell and will generate the Grid Table based on the category which the cell currently is.
Unplanned
Last Updated: 21 Nov 2024 13:26 by Federico

I had already tried using reflection via dataTemplate to access the ColumnGroup and RowGroup properties. It would be nice if in future versions, if possible, these were accessible directly and without having to use reflection for efficiency reasons. Expose the current field as well.

In addition to this, it would be convenient to know which row and column they refer to, in order to know which field of the Pivot dataset relates to the calculation performed, and apply custom logic to them.

In summary, expose: ColumnGroup, RowGroup, and the current field.

Completed
Last Updated: 14 Nov 2024 09:28 by ADMIN
Release 7.0.0
Created by: Mate
Comments: 0
Category: PivotGrid
Type: Bug Report
1
In the PivotGrid there are two "GRAND TOTAL" labels. When using localization only the one on the row is translated. The column Grand total label is not translated.
Completed
Last Updated: 14 Nov 2024 09:27 by ADMIN
Release 7.0.0

I am binding the PivorGrid to local data and I am validating that the list contains some records. However, the PivotGrid appears empty. It looks like if the data arrives after PivotGrid initializes, the component does not display it.

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

===

ADMIN EDIT

===

A possible option to handle the scenario for the time being is to ensure the PivotGrid initializes only when the data is available. For that purpose, you can conditionally render the component based on the data count. Optionally, you can show a LoaderContainer while the data is being fetched.

Here is an example that showcases the approach: https://blazorrepl.telerik.com/cdujObbF15YVdqvR54.
Completed
Last Updated: 14 Nov 2024 09:27 by ADMIN
Release 7.0.0

The component struggles to update Local data source when it changes. I have bound it to a value, but when that value changes it is not reflected in the UI.

The issue occurs when you update the data with an entirely new collection. Calling Rebind afterwards does not help either.

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

===

ADMIN EDIT

===

A possible workaround for the time being is to dispose and re-initialize the component when the new data arrives. Here is an example: https://blazorrepl.telerik.com/cHFlaNOg49AjRPUl19.

Unplanned
Last Updated: 30 Oct 2024 12:16 by Andreas
Created by: Andreas
Comments: 0
Category: PivotGrid
Type: Feature Request
4

Hello,

in the WPF Pivot component I created custom calculated fields. Please expose a similar feature in the Blazor PivotGrid.

https://docs.telerik.com/devtools/wpf/controls/radpivotgrid/features/queryabledataprovider/queryable-calc-fields

var OeeA = new OeeA_BerechnetesFeld(); //Telerik.Pivot.Core.CalculatedField
OeeA.Name = "OEE A";
DataSource.CalculatedFields.Add(OeeA); // DataSource is the LocalDataSourceProvider

DataSource.AggregateDescriptions.Add(new CalculatedAggregateDescription { CalculatedFieldName = "OEE A", StringFormat = "#.#0" });


Declined
Last Updated: 25 Sep 2024 08:39 by ADMIN
Created by: Eric
Comments: 2
Category: PivotGrid
Type: Feature Request
4

The current privot grid is a good start, but it is missing some key features.

  1. Being able to resize columns
  2. Have custom column and row header/footers
  3. Export to excel

 

Unplanned
Last Updated: 09 Aug 2024 05:34 by Tung
Created by: Tung
Comments: 0
Category: PivotGrid
Type: Feature Request
2
Currently, the PivotGrid data can only be sorted within the PivotGrid configurator.
Unplanned
Last Updated: 13 Sep 2023 10:55 by ADMIN
I want to keep the standard numeric values in the cells but I also want to show a separate column to display the cell values in percent of the column total. Similar to the PercentOfColumnTotal option in Ajax PivotGrid.
1 2