Workaround: private void radPivotGrid1_GroupDescriptorElementCreating(object sender, Telerik.WinControls.UI.GroupDescriptorElementCreatingEventArgs e) { e.GroupDescriptorElement.FilterPopup.PopupOpened -= FilterPopup_PopupOpened; e.GroupDescriptorElement.FilterPopup.PopupOpened += FilterPopup_PopupOpened; } private void FilterPopup_PopupOpened(object sender, EventArgs args) { PivotGroupFilterPopup filterPopup = (PivotGroupFilterPopup)sender; RadTreeView tree = filterPopup.TreeViewMenuItem.TreeElement.TreeView; int height = this.CalculateHeight(tree); if (height > tree.Height) { ((RadScrollBarElement)tree.TreeViewElement.Children[2]).Value = 0; ((RadScrollBarElement)tree.TreeViewElement.Children[2]).Maximum = height; ((RadScrollBarElement)tree.TreeViewElement.Children[2]).Visibility = Telerik.WinControls.ElementVisibility.Visible; } } private int CalculateHeight(RadTreeView tree) { int height = 0; for (int i = 0; i < tree.Nodes[0].Nodes.Count + 1; i++) { height += tree.ItemHeight; } return height; }
Workaround: PivotExportToExcelML.ExportVisualSettings = false;
To reproduce: - Add calculated field - Try to set its number format, by clicking the Number Format option in the context menu in the field list (see image) Workaround: Private Sub RadPivotGrid1_CellFormatting(sender As Object, e As UI.PivotCellEventArgs) Handles RadPivotGrid1.CellFormatting If e.CellElement.Column.Name = "Commission" Then e.CellElement.Text = String.Format(System.Threading.Thread.CurrentThread.CurrentUICulture, "{0:C}", e.CellElement.Value) End If End Sub
To reproduce: 1. Add a RadPivotGrid and change its theme to TelerikMetro. This theme uses Segoe UI font for its cells. 2. Export the RadPivotGrid. 3. You will notice that the font is applied to some of the cells, but for others, e.g. Grand Total the default font is set to Microsoft Sans Serif Second scenario: use Demo application PivotGrid >> Export to Excel example. Use ControlDefault theme. 1. Ctrl + H to show the spy. Check font for row "Jun-1 >> Sum of Net", column "Printer stand >> 1 Free with 10". The font is Segoe UI. 2. Run the export and check the same cell in Excel. Its font is Microsoft Sans Serif. Workaround: use the PivotExcelCellFormatting event to specify the font.
Argument exception when a specific layout is loaded: "An item with the same key has already been added."
Steps to reproduce: 1. Add a RadPivotGrid to a form and populate it with data or use the one in the Demo application 2. Press Ctrl+A to select all cells 3, Press Ctrl+C to copy all cells to the clipboard You will get an exception.
The new API would allow some of the default functions to be removed and custom aggregate functions to be added. At the moment the dialog can be modified like this: Public Class MyAggregateOptionsDialog Inherits AggregateOptionsDialog Private availableAggregateFunctions As IList(Of AggregateFunction) = New List(Of AggregateFunction)() From { AggregateFunctions.Sum, AggregateFunctions.Count, AggregateFunctions.Average, AggregateFunctions.Max, AggregateFunctions.Min, AggregateFunctions.Product, AggregateFunctions.StdDev, AggregateFunctions.StdDevP, AggregateFunctions.Var, AggregateFunctions.VarP, New SqrtSumAggregateFunction() } Public Overrides Sub LoadSettings(aggregateDescription As PropertyAggregateDescriptionBase) MyBase.LoadSettings(aggregateDescription) Dim listAggregateFunctions = DirectCast(Me.GetType().BaseType.GetField("listAggregateFunctions", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(Me), RadListControl) listAggregateFunctions.DataSource = availableAggregateFunctions End Sub End Class
How to reproduce: check the attached project and select an item from the drop-down list
To reproduce the problem, use the following setup for RadPivotGrid:
public RadForm1()
{
InitializeComponent();
DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Salary", typeof(int));
table.Columns.Add("Title", typeof(string));
table.Rows.Add("John",1200,"Accountant");
table.Rows.Add("Ana", 800, "Accountant");
table.Rows.Add("Sam", 2500, "Manager");
table.Rows.Add("Tom", 1300, "Manager");
this.radPivotGrid1.RowGroupDescriptions.Add(new PropertyGroupDescription() { PropertyName = "Title"});
this.radPivotGrid1.RowGroupDescriptions.Add(new PropertyGroupDescription() { PropertyName = "Name" });
this.radPivotGrid1.AggregateDescriptions.Add(new PropertyAggregateDescription() { PropertyName = "Salary", AggregateFunction = AggregateFunctions.Sum });
this.radPivotGrid1.DataSource = table;
}
Follow the steps:
1. Filter the child group ("Name") >> Salary>1000.
This is the result of the applied filter:
2. Filter the parent group ("Title") >> Salary>1500.
After applying the filter, the observed result is that the Accountant group is still displayed even though it should be filtered and hidden (like in Excel):
Observed result:
Expected result:
To reproduce: Create a localization provider following the article - http://wwwsit.telerik.com/help/winforms/pivotgrid-localization-localization.html. When you start the app you will see that the PivotAggregateP0ofP1 is not used. Workaround: Use the formatting events to format the needed values - http://wwwsit.telerik.com/help/winforms/pivotgrid-formatting-appearance.html
To reproduce: private void Form1_Load(object sender, EventArgs e) { this.ordersTableAdapter.Fill(this.nwindDataSet.Orders); LocalDataSourceProvider dataProvider = new LocalDataSourceProvider(); dataProvider.Culture = new System.Globalization.CultureInfo("ru-RU"); dataProvider.ItemsSource = this.ordersBindingSource; dataProvider.BeginInit(); dataProvider.RowGroupDescriptions.Add(new DateTimeGroupDescription() { PropertyName = "OrderDate", Step = DateTimeStep.Year, GroupComparer = new GroupNameComparer() }); dataProvider.RowGroupDescriptions.Add(new DateTimeGroupDescription() { PropertyName = "OrderDate", Step = DateTimeStep.Quarter, GroupComparer = new GroupNameComparer() }); dataProvider.RowGroupDescriptions.Add(new DateTimeGroupDescription() { PropertyName = "OrderDate", Step = DateTimeStep.Month, GroupComparer = new GroupNameComparer() }); dataProvider.ColumnGroupDescriptions.Add(new PropertyGroupDescription() { PropertyName = "EmployeeID", GroupComparer = new GrandTotalComparer() }); dataProvider.EndInit(); dataProvider.BeginInit(); dataProvider.AggregateDescriptions.Add(new PropertyAggregateDescription() { PropertyName = "Freight", AggregateFunction = AggregateFunctions.Sum }); dataProvider.AggregateDescriptions.Add(new PropertyAggregateDescription() { PropertyName = "Freight", AggregateFunction = AggregateFunctions.Average }); dataProvider.EndInit(); this.radPivotGrid1.DataProvider = dataProvider; } Workaround: CultureInfo russianCultureInfo = new System.Globalization.CultureInfo("ru-RU"); List<string> monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.ToList(); public Form1() { InitializeComponent(); this.radPivotGrid1.GroupDescriptorElementCreating += radPivotGrid1_GroupDescriptorElementCreating; } private void radPivotGrid1_GroupDescriptorElementCreating(object sender, GroupDescriptorElementCreatingEventArgs e) { if (e.GroupDescriptorElement.Text == "Month") { e.GroupDescriptorElement.FilterPopup.PopupOpening -= FilterPopupPopupOpening; e.GroupDescriptorElement.FilterPopup.PopupOpening += FilterPopupPopupOpening; } } private void FilterPopupPopupOpening(object sender, CancelEventArgs args) { PivotGroupFilterPopup popup = sender as PivotGroupFilterPopup; if (popup != null) { popup.TreeViewMenuItem.TreeElement.TreeView.NodeFormatting -= TreeView_NodeFormatting; popup.TreeViewMenuItem.TreeElement.TreeView.NodeFormatting += TreeView_NodeFormatting; } } private void TreeView_NodeFormatting(object sender, TreeNodeFormattingEventArgs e) { DateTime date; int monthIndex = monthNames.IndexOf(e.Node.Text); if (monthIndex > -1) { e.Node.Text = russianCultureInfo.DateTimeFormat.MonthNames[monthIndex]; } }
The best solution would be to have cells in Excel with the correct data type and formatted values. This can be achieved with an additional property similar to RadGridView. At the moment data cells which are created from aggregate descriptions with an applied StringFormat property are exported as text and they do not persist the formatting which is not correct. A possible workaround is to set the ExportVisualSettings property of the PivotGridSpreadExport object to true so that the formatting event to fire. Then in the CellFormatting event one can set the FormatString this way: private void SpreadExport_CellFormatting(object sender, PivotGridSpreadExportCellFormattingEventArgs e) { if (e.Cell.Text.StartsWith("$")) { e.Cell.FormatString = "$ #.00"; } else if (e.Cell.Text.Contains("€")) { e.Cell.FormatString = "#.00 €"; } } PivotGridSpreadExportCellFormattingEventArgs, however, does not provide information about the actual aggregate of the data cell, so the applied number format on the aggregate cannot be obtained in the formatting event.
To reproduce: - Open the demo application and navigate to the olap browser demo. - Click the filter icon in the Product Line (top left corner).
The issue may manifest if aggregate descriptions are added on the pivot`s column axis and if their member does not return data.
To reproduce:
- Set the ExportFlatData property to true
- Export the grid using PivotExportToExcelML
Workaround:
Use the new PivotGridSpreadExport