Completed
Last Updated: 29 Mar 2019 09:40 by Dimitar
How to reproduce: see the attached video

Workaround:
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();

        this.radPivotFieldList1.DragDropService = new CustomPivotFieldListDragDropService(this.radPivotFieldList1);
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'nwindDataSet.Orders' table. You can move, or remove it, as needed.
        this.ordersTableAdapter.Fill(this.nwindDataSet.Orders);

    }
}

public class CustomPivotFieldListDragDropService : PivotFieldListDragDropService
{
    private RadPivotFieldList fieldList;
    private Telerik.WinControls.UI.PivotFieldList.FieldPayload payload;

    public CustomPivotFieldListDragDropService(RadPivotFieldList fieldList)
        : base(fieldList)
    {
        this.fieldList = fieldList;
    }

    protected override void PerformStart()
    {
        base.PerformStart();

        Telerik.WinControls.UI.PivotFieldList.IField draggedField = this.GetField(this.Context);

        if (draggedField == null)
        {
            this.Stop(false);
            return;
        }

        this.payload = new Telerik.WinControls.UI.PivotFieldList.FieldPayload(draggedField);
    }

    protected override void OnPreviewDragOver(RadDragOverEventArgs e)
    {
        RadElement targetElement = this.DropTarget as RadElement;
        Telerik.WinControls.UI.PivotFieldList.IField targetField = this.GetField(targetElement);

        if (targetElement != null && targetElement.ElementTree.Control == this.fieldList.ReportFiltersControl && this.payload != null)
        {
            foreach (Telerik.WinControls.UI.PivotFieldList.IField field in this.fieldList.ViewModel.Filters)
            {
                if (field.FieldInfo == payload.DraggedField.FieldInfo &&  this.Context is TreeNodeElement ))
                {
                    e.CanDrop = false;
                    this.payload.SetDestination(null);
                    this.payload.RemoveFromSource = false;

                    return;
                }
            }
        }

        base.OnPreviewDragOver(e);
    }

    private Telerik.WinControls.UI.PivotFieldList.IField GetField(object context)
    {
        RadListVisualItem listItem = context as RadListVisualItem;
        TreeNodeElement treeItem = context as TreeNodeElement;
        PivotFieldListItemButton button = context as PivotFieldListItemButton;

        if (button != null)
        {
            listItem = button.Owner;
        }

        Telerik.WinControls.UI.PivotFieldList.IField field1 = null, field2 = null;
        if (listItem != null && listItem.Data != null)
        {
            field1 = listItem.Data.DataBoundItem as Telerik.WinControls.UI.PivotFieldList.IField;
        }

        if (treeItem != null && treeItem.Data != null)
        {
            field2 = treeItem.Data.DataBoundItem as Telerik.WinControls.UI.PivotFieldList.IField;
        }

        return field1 ?? field2;
    }
}
Completed
Last Updated: 11 Oct 2018 14:04 by Dimitar
How to reproduce: 
Me.RadPivotGrid1.DataSource = Nothing

Workaround: 
DirectCast(Me.RadPivotGrid1.DataProvider, LocalDataSourceProvider).ItemsSource = Nothing
Dim viewModel = Me.RadPivotGrid1.PivotGridElement.GetType().GetField("viewModel", BindingFlags.Instance Or BindingFlags.NonPublic).GetValue(Me.RadPivotGrid1.PivotGridElement)
viewModel.GetType().GetProperty("DataProvider").SetValue(viewModel, Nothing)
Completed
Last Updated: 10 Jan 2019 12:03 by ADMIN
The issue may manifest if aggregate descriptions are added on the pivot`s column axis and if their member does not return data.
Completed
Last Updated: 12 Mar 2018 12:17 by Dimitar
How to reproduce: check the attached project and screenshots, the correct items are shown in screenshot correct-items-calculated-field.jpg

Workaround: 
public partial class Form1 : Form
{
    private LocalDataSourceProvider provider;

    public Form1()
    {
        InitializeComponent();

        //Setup pivot and add calculated field

        //Workaround
        this.radPivotFieldList1.ValuesControl.CreatingVisualListItem += ValuesControl_CreatingVisualListItem;
    }

    private void ValuesControl_CreatingVisualListItem(object sender, CreatingVisualListItemEventArgs args)
    {
        args.VisualItem = new MyPivotFieldListVisualItem(this.radPivotFieldList1.ViewModel);
    }
}

public class MyPivotFieldListVisualItem : PivotFieldListVisualItem
{
    FieldListViewModel viewModel;

    public MyPivotFieldListVisualItem(FieldListViewModel viewModel)
        : base(viewModel)
    {
        this.viewModel = viewModel;
    }

    protected override void UpdateContextMenu()
    {
        base.UpdateContextMenu();

        PivotFieldListItemButton button = (PivotFieldListItemButton)typeof(PivotFieldListVisualItem).GetField("button", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(this);
        string providerName = this.viewModel.DataProvider != null ? this.viewModel.DataProvider.GetType().FullName : String.Empty;
        if (this.Data == null)
        {
            return;
        }

        if (this.Data.DataBoundItem is Value && !(providerName.Contains("Xmla") || providerName.Contains("Adomd")))
        {
            for (int i = 0; i < 5; i++)
            {
                button.Items.RemoveAt(i);
            }
        }
    }
}


Completed
Last Updated: 29 Nov 2017 14:07 by ADMIN
Completed
Last Updated: 28 Nov 2017 06:45 by ADMIN
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
Completed
Last Updated: 11 Jul 2017 14:00 by ADMIN
To reproduce:
Try setting the value in the CellForamting event. 

Workaround:
class MySpreadExportRenderer : SpreadExportRenderer
{
    public override void SetCellSelectionValue(DataType dataType, object value)
    {
        base.SetCellSelectionValue(dataType, value);
        if (dataType == DataType.Number)
        {
            CellRange range = ((CellSelection)this.GetCellSelection()).CellRanges.ElementAtOrDefault(0);
            double d;
            if (double.TryParse(Convert.ToString(value), out d))
            {
                var cell = ((Worksheet)this.GetWorksheet()).Cells[range.FromIndex.RowIndex, range.FromIndex.ColumnIndex];
                cell.SetFormat(new CellValueFormat("#,##0.00"));
                cell.SetValue(d);
            }
        }
    }
}

Completed
Last Updated: 28 Jun 2017 06:32 by ADMIN
Workaround:
public Form1()
{
    InitializeComponent();

    this.radPivotGrid1.GroupDescriptorElementCreating += radPivotGrid1_GroupDescriptorElementCreating;
}

private void radPivotGrid1_GroupDescriptorElementCreating(object sender, Telerik.WinControls.UI.GroupDescriptorElementCreatingEventArgs e)
{
    FieldInfo fi = e.GroupDescriptorElement.GetType().GetField("filterPopup", BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
    fi.SetValue(e.GroupDescriptorElement, new MyPivotGroupFilterPopup(e.GroupDescriptorElement) { Visible = false });

    e.GroupDescriptorElement.SortDirectionArrow.Visibility = ElementVisibility.Collapsed;
}

public class MyPivotGroupFilterPopup : PivotGroupFilterPopup
    {
        public MyPivotGroupFilterPopup(PivotGroupDescriptorElement pivotGroupDescriptorElement)
            : base(pivotGroupDescriptorElement)
        { }

        protected override void LoadSettings()
        {
            base.LoadSettings();

            this.Items.Remove(SortAZMenuItem);
            this.Items.Remove(SortZAMenuItem);
            this.Items.Remove(SortOptionsMenuItem);
        }
    }
Completed
Last Updated: 16 May 2017 06:12 by ADMIN
Workaround: remove the localization provider before saving the layout and then add it back.
Completed
Last Updated: 04 Sep 2019 13:29 by ADMIN
Release R3 2019
Hour, minute, second, if possible also week
Completed
Last Updated: 31 Oct 2016 13:32 by ADMIN
How to reproduce: check the attached video

Workaround: 
private void button1_Click(object sender, EventArgs e)
{
    this.radPivotFieldList1.DragDropService.PreviewDragDrop += DragDropService_PreviewDragDrop;
}

IGroupDescription cache;
string group;
private void DragDropService_PreviewDragDrop(object sender, Telerik.WinControls.RadDropEventArgs e)
{
    TreeNodeElement nodeElement = e.DragInstance as TreeNodeElement;
    if (nodeElement != null)
    {
        IField field = nodeElement.Data.DataBoundItem as IField;
        string draggedItem = field.FieldInfo.Name;
        IGroupDescription rowDesc = this.radPivotGrid1.RowGroupDescriptions.Where(i => i.GetUniqueName() == draggedItem).FirstOrDefault();
        if (rowDesc != null)
        {
            cache = (IGroupDescription)rowDesc.Clone();
            group = "Row";
        }

        IGroupDescription colDesc = this.radPivotGrid1.ColumnGroupDescriptions.Where(i => i.GetUniqueName() == draggedItem).FirstOrDefault();
        if (colDesc != null)
        {
            cache = (IGroupDescription)colDesc.Clone();
            group = "Column";
        }

        if (cache != null)
        {
            this.radPivotGrid1.UpdateCompleted += radPivotGrid1_UpdateCompleted;    
        }
    }
}

private void radPivotGrid1_UpdateCompleted(object sender, EventArgs e)
{
    this.radPivotGrid1.UpdateCompleted -= radPivotGrid1_UpdateCompleted;
    switch (group)
    {
        case "Row":
            this.radPivotGrid1.RowGroupDescriptions.Add(cache);
            break;
        case "Column":
            this.radPivotGrid1.ColumnGroupDescriptions.Add(cache);
            break;
        default:
            break;
    }

    cache = null;
}
Completed
Last Updated: 31 Oct 2016 13:31 by ADMIN
How to reproduce:
   var data = this.dbContext.Orders.Where(o => o.OrderID > 10500).Select(o => new
            {
                Id = o.OrderID,
                OrderDate = o.OrderDate,
                ShipDate = o.ShippedDate,
                Freight = o.Freight
            }).ToArray();

this.localDataProvider = new LocalDataSourceProvider() {ItemsSource = data};

Workaround:
1. Instead of  ToArray call ToList
var data = this.dbContext.Orders.Where(o => o.OrderID > 10500).Select(o => new
{
    Id = o.OrderID,
    OrderDate = o.OrderDate,
    ShipDate = o.ShippedDate,
    Freight = o.Freight
}).ToList();

this.localDataProvider = new LocalDataSourceProvider() {ItemsSource = data};

2. Call the ToArray method but do not create anonymous objects.
var data = this.dbContext.Orders.Where(o => o.OrderID > 10500).Select(o => new PivotModel
{
    Id = o.OrderID,
    OrderDate = o.OrderDate,
    ShipDate = o.ShippedDate,
    Freight = o.Freight
}).ToArray();

this.localDataProvider = new LocalDataSourceProvider() {ItemsSource = data};

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

    public DateTime? OrderDate { get; set; }

    public DateTime? ShipDate { get; set; }

    public decimal? Freight { get; set; }
}

Completed
Last Updated: 07 Oct 2016 07:18 by ADMIN
Workaround:
private void PrintPivotGrid()
{
    MyPivotGridPrintStyle style = new MyPivotGridPrintStyle();
    style.LayoutType = PivotLayout.Tabular;
    this.radPivotGrid1.PrintStyle = style;
    this.radPivotGrid1.PrintPreview();
}

public class MyPivotGridPrintStyle : PivotGridPrintStyle
{
    public override void Initialize()
    {
        base.Initialize();

        FieldInfo fiColumnWidths = this.GetType().BaseType.GetField("columnWidths", BindingFlags.Instance | BindingFlags.NonPublic);
        List<int> columnWidths = (List<int>)fiColumnWidths.GetValue(this);
        RadPivotGridElement pivotGrid = (RadPivotGridElement)this.GetType().BaseType.GetField("pivotGrid", BindingFlags.Instance | BindingFlags.NonPublic)
                                                                                    .GetValue(this);

        for (int i = 0; i < pivotGrid.RowDescriptorsArea.Children.Count; i++)
        {
            RadElement descriptor = pivotGrid.RowDescriptorsArea.Children[i];
            columnWidths[i] = descriptor.Size.Width;
        }
    }
}


Completed
Last Updated: 09 Nov 2016 13:49 by ADMIN
Until the feature becomes available use the following workaround:

MyPivotGridChartDataProvider chartProvider = new MyPivotGridChartDataProvider(this.radPivotGrid1.PivotGridElement);
this.radPivotGrid1.ChartDataProvider = chartProvider;
this.radChartView1.DataSource = this.radPivotGrid1;
this.radChartView1.ShowLegend = true;
this.radPivotGrid1.ChartDataProvider.SeriesAxis = Telerik.Pivot.Core.PivotAxis.Rows;
this.radPivotGrid1.ChartDataProvider.GeneratedSeriesType = Telerik.WinControls.UI.GeneratedSeriesType.Line;

public class MyPivotGridChartDataProvider : PivotGridChartDataProvider
{
    public MyPivotGridChartDataProvider(RadPivotGridElement pivotGridElement)
        : base(pivotGridElement) { }

    public override void UpdateChartData()
    {
        base.UpdateChartData();

        foreach (ChartSeries series in this.ChartView.Series)
        {
            CartesianSeries cartesianSeries = series as CartesianSeries;
            if (cartesianSeries == null)
            {
                continue;
            }

            cartesianSeries.PointSize = new SizeF(7, 7);

            BindingList<PivotChartModelPoint> newData = new BindingList<PivotChartModelPoint>();
            BindingList<PivotDataPoint> points = cartesianSeries.DataSource as BindingList<PivotDataPoint>;

            foreach (PivotDataPoint point in points)
            {
                PivotChartModelPoint current = new PivotChartModelPoint() { Group = point.PivotGroup };
                if (point.Value != 0)
                {
                    current.Value = point.Value;
                }
                else
                {
                    current.Value = null;
                }

                newData.Add(current);
            }

            cartesianSeries.DataSource = null;

            cartesianSeries.CategoryMember = "Group";
            cartesianSeries.ValueMember = "Value";
            cartesianSeries.DataSource = newData;
        }
    }
}

public class PivotChartModelPoint
{
    public string Group{ get; set; }

    public double? Value { get; set; }
}

Completed
Last Updated: 04 Oct 2016 06:36 by Alex Dybenko
Workaround:

public Form1()
{
    InitializeComponent();

    this.radPivotFieldList1.ValuesControl.CreatingVisualListItem += Aggregates_CreatingVisualListItem;
}

private void Aggregates_CreatingVisualListItem(object sender, Telerik.WinControls.UI.CreatingVisualListItemEventArgs args)
{
    args.VisualItem = new MyPivotFieldListVisualItem(this.radPivotFieldList1.ViewModel);
}

    public class MyPivotFieldListVisualItem : PivotFieldListVisualItem
    {
        private FieldListViewModel viewModel;
 
        private CommandBarDropDownButton button;
        private RadMenuItem sumMenuItem;
        private RadMenuItem avgMenuItem;
        private RadMenuItem countMenuItem;
 
        public MyPivotFieldListVisualItem(FieldListViewModel viewModel)
            : base(viewModel)
        {
            this.viewModel = viewModel;
        }
 
        protected override void CreateChildElements()
        {
            base.CreateChildElements();
 
            this.sumMenuItem = this.GetType().BaseType
                .GetField("sumMenuItem", BindingFlags.Instance | BindingFlags.NonPublic)
                .GetValue(this) as RadMenuItem;
 
            this.avgMenuItem = this.GetType().BaseType
              .GetField("avgMenuItem", BindingFlags.Instance | BindingFlags.NonPublic)
              .GetValue(this) as RadMenuItem;
 
            this.countMenuItem = this.GetType().BaseType
              .GetField("countMenuItem", BindingFlags.Instance | BindingFlags.NonPublic)
              .GetValue(this) as RadMenuItem;
 
            if (sumMenuItem != null && avgMenuItem != null && countMenuItem != null)
            {
                sumMenuItem.Click += OnAggregateFunctionClick;
                avgMenuItem.Click += OnAggregateFunctionClick;
                countMenuItem.Click += OnAggregateFunctionClick;
            }
 
            this.button = this.GetType().BaseType
             .GetField("button", BindingFlags.Instance | BindingFlags.NonPublic)
             .GetValue(this) as CommandBarDropDownButton;
 
            RadMenuItem aggregateOptionsMenuItem = this.GetType().BaseType
                .GetField("aggregateOptionsMenuItem", BindingFlags.Instance | BindingFlags.NonPublic)
                .GetValue(this) as RadMenuItem;
 
            aggregateOptionsMenuItem.Click += aggregateOptionsMenuItem_Click;
 
            RadMenuItem numberFormatMenuItem = this.GetType().BaseType
                .GetField("numberFormatMenuItem", BindingFlags.Instance | BindingFlags.NonPublic)
                .GetValue(this) as RadMenuItem;
 
            numberFormatMenuItem.Click += numberFormatMenuItem_Click;
        }
 
        private void numberFormatMenuItem_Click(object sender, EventArgs e)
        {
            Value value = (this.Data.DataBoundItem as Value);
            if (value == null)
            {
                return;
            }
 
            MyNumberFormatOptionsDialog dialog =  new MyNumberFormatOptionsDialog();
            dialog.ThemeName = this.GetThemeName();
 
            QueryableAggregateDescription queryableAggregateDescription = (value.Description as QueryableAggregateDescription);
            if (queryableAggregateDescription != null)
            {
                dialog.LoadQueryableSettings(queryableAggregateDescription);
            }
 
            System.Windows.Forms.DialogResult result = dialog.ShowDialog();
 
            if (result == System.Windows.Forms.DialogResult.OK)
            {
                queryableAggregateDescription.StringFormat = dialog.SelectedStringFormat;
                this.viewModel.ExecuteUpdate();
            }
        }
 
        private void aggregateOptionsMenuItem_Click(object sender, EventArgs e)
        {
            MyAggregateOptionsDialog dialog = new MyAggregateOptionsDialog();
            dialog.ThemeName = this.GetThemeName();
 
            Value value = (this.Data.DataBoundItem as Value);
            if (value != null)
            {
                QueryablePropertyAggregateDescriptionBase queryableAggregateDescription = (value.Description as QueryablePropertyAggregateDescriptionBase);
                if (queryableAggregateDescription != null)
                {
                    dialog.LoadQueryableSettings(queryableAggregateDescription);
                }
 
                System.Windows.Forms.DialogResult result = dialog.ShowDialog();
                if (result == System.Windows.Forms.DialogResult.OK)
                {
                    queryableAggregateDescription.AggregateFunction = dialog.SelectedQueryableAggregateFunction;
                    queryableAggregateDescription.CustomName = dialog.CustomName;
 
                    this.Synchronize();
                    this.viewModel.ExecuteUpdate();
                }
            }
        }
 
        private void OnAggregateFunctionClick(object sender, EventArgs e)
        {
            Value value = (this.Data.DataBoundItem as Value);
            string function = ((RadMenuItem)sender).Text;
 
            if (value != null && this.SetNewAggregateFunction(value.Description, function))
            {
                this.Synchronize();
                this.viewModel.ExecuteUpdate();
            }
        }
 
        private bool SetNewAggregateFunction(IAggregateDescription description, string function)
        {
            QueryablePropertyAggregateDescriptionBase queryableDescription = (description as QueryablePropertyAggregateDescriptionBase);
            if (queryableDescription != null)
            {
                switch (function)
                {
                    case "Sum":
                        queryableDescription.AggregateFunction = QueryableAggregateFunction.Sum;
                        break;
                    case "Count":
                        queryableDescription.AggregateFunction = QueryableAggregateFunction.Count;
                        break;
                    case "Average":
                        queryableDescription.AggregateFunction = QueryableAggregateFunction.Average;
                        break;
                    default:
                        return false;
                }
 
                return true;
            }
 
            return false;
        }
 
        protected override void SynchronizeProperties()
        {
            base.SynchronizeProperties();
 
            Value value = (this.Data.DataBoundItem as Value);
            Label label = (this.Data.DataBoundItem as Label);
 
            if (value != null)
            {
#if !NETFX2
                QueryablePropertyAggregateDescription queryableDescription = (value.Description as QueryablePropertyAggregateDescription);
                if (queryableDescription != null)
                {
                    this.sumMenuItem.IsChecked = queryableDescription.AggregateFunction == QueryableAggregateFunction.Sum;
                    this.countMenuItem.IsChecked = queryableDescription.AggregateFunction == QueryableAggregateFunction.Count;
                    this.avgMenuItem.IsChecked = queryableDescription.AggregateFunction == QueryableAggregateFunction.Average;
                }
#endif
            }
        }
 
        private string GetThemeName()
        {
            if (this.ElementTree == null)
            {
                return string.Empty;
            }
 
            RadControl control = this.ElementTree.Control as RadControl;
 
            return control != null ? control.ThemeName : string.Empty;
        }
    }
 
public class MyAggregateOptionsDialog : AggregateOptionsDialog
    {
        private RadListControl listAggregateFunctions;
        private RadLabel labelFieldName;
        private RadTextBox textBoxCustomName;

        public MyAggregateOptionsDialog()
        {
            this.listAggregateFunctions = this.GetType().BaseType
               .GetField("listAggregateFunctions", BindingFlags.Instance | BindingFlags.NonPublic)
               .GetValue(this) as RadListControl;

            this.labelFieldName = this.GetType().BaseType
                .GetField("labelFieldName", BindingFlags.Instance | BindingFlags.NonPublic)
                .GetValue(this) as RadLabel;

            this.textBoxCustomName = this.GetType().BaseType
                .GetField("textBoxCustomName", BindingFlags.Instance | BindingFlags.NonPublic)
                .GetValue(this) as RadTextBox;
        }

        private readonly IList<QueryableAggregateFunction> availableQueryableAggregateFunctions = new List<QueryableAggregateFunction>()
            {
                QueryableAggregateFunction.Sum,
                QueryableAggregateFunction.Count,
                QueryableAggregateFunction.Average,
                QueryableAggregateFunction.Max,
                QueryableAggregateFunction.Min
            };

        public virtual QueryableAggregateFunction SelectedQueryableAggregateFunction
        {
            get
            {
                return (QueryableAggregateFunction)this.listAggregateFunctions.SelectedValue;
            }
        }

        public virtual void LoadQueryableSettings(QueryablePropertyAggregateDescriptionBase aggregateDescription)
        {
            if (this.listAggregateFunctions.DataSource != null)
            {
                this.listAggregateFunctions.DataSource = availableQueryableAggregateFunctions;
            }

            this.listAggregateFunctions.SelectedValue = aggregateDescription.AggregateFunction;
            this.labelFieldName.Text = aggregateDescription.PropertyName;
            this.Text = String.Format("{0}{1}{2}", "Aggregate Options (", aggregateDescription.PropertyName, ")");
            this.textBoxCustomName.Text = aggregateDescription.CustomName;
        }
    }

public class MyNumberFormatOptionsDialog : NumberFormatOptionsDialog
    {
        private TextBox textBox;

        public MyNumberFormatOptionsDialog()
        {
            RadDropDownList dropDownListFormat = this.GetType().BaseType
                   .GetField("dropDownListFormat", BindingFlags.Instance | BindingFlags.NonPublic)
                   .GetValue(this) as RadDropDownList;

            this.textBox = (TextBox)dropDownListFormat.DropDownListElement.EditableElement.TextBox.TextBoxItem.HostedControl;
        }

        public virtual void LoadQueryableSettings(QueryableAggregateDescriptionBase aggregateDescription)
        {
            this.textBox.Text = aggregateDescription.StringFormat;
            this.Text = String.Format(PivotGridLocalizationProvider.CurrentProvider.GetLocalizedString(PivotStringId.NumberFormatOptionsDialogFormatOptionsDescription),
                aggregateDescription.DisplayName);
            this.textBox.Select(this.textBox.Text.Length, 0);
            this.textBox.Focus();
        }
    }
Completed
Last Updated: 31 Aug 2016 09:42 by ADMIN
Until the feature gets implemented use custom PivotGridPrintStyle:

Public Class MyPivotGridPrintStyle
    Inherits PivotGridPrintStyle

    Const MIN_SPACE As Integer = 1

    Public Overrides Sub DrawPage(drawArea As Rectangle, graphics As Graphics, pageNumber As Integer)

        If Me.PivotGrid.ColumnHeaderHeight > MIN_SPACE Then
            MyBase.DrawPage(drawArea, graphics, pageNumber)

        Else
            Dim x As Integer = drawArea.X
            Dim y As Integer = drawArea.Y
            Dim scale As SizeF = DirectCast(Me.GetType().BaseType.GetMethod("GetScaleFactors", BindingFlags.Instance Or BindingFlags.NonPublic).Invoke(Me, New Object() {drawArea}), SizeF)

            Dim startColumn As Integer = DirectCast(Me.GetType().BaseType.GetMethod("GetStartColumn", BindingFlags.Instance Or BindingFlags.NonPublic).Invoke(Me, New Object() {pageNumber, drawArea, scale.Width}), Integer)
            Dim endColumn As Integer = DirectCast(Me.GetType().BaseType.GetMethod("GetEndColumn", BindingFlags.Instance Or BindingFlags.NonPublic).Invoke(Me, New Object() {startColumn, drawArea, scale.Width}), Integer)
            Dim startRow As Integer = DirectCast(Me.GetType().BaseType.GetMethod("GetStartRow", BindingFlags.Instance Or BindingFlags.NonPublic).Invoke(Me, New Object() {pageNumber, drawArea, scale.Height}), Integer)
            Dim endRow As Integer = DirectCast(Me.GetType().BaseType.GetMethod("GetEndRow", BindingFlags.Instance Or BindingFlags.NonPublic).Invoke(Me, New Object() {startRow, drawArea, scale.Height}), Integer)

            If Me.PivotGrid.ColumnHeaderHeight <= MIN_SPACE Then
                startRow += 1
            End If

            For i As Integer = startRow To endRow
                x = drawArea.X
                Dim maxHeight As Integer = 0

                For j As Integer = startColumn To endColumn
                    Dim columnWidths = DirectCast(Me.GetType().BaseType.GetField("columnWidths", BindingFlags.Instance Or BindingFlags.NonPublic).GetValue(Me), List(Of Integer))
                    Dim rowHeights = DirectCast(Me.GetType().BaseType.GetField("rowHeights", BindingFlags.Instance Or BindingFlags.NonPublic).GetValue(Me), List(Of Integer))

                    Dim elementRect As New Rectangle(x, y, columnWidths(j), rowHeights(i))
                    Dim printElement As RadPrintElement = Me.GetPrintElementForCell(i, j)
                    printElement.ScaleTransform = scale
                    Dim transformedRect As RectangleF = printElement.GetTransformedBounds(elementRect)

                    Me.PrintElement(printElement, drawArea, elementRect, graphics)
                    x += CInt(Math.Floor(transformedRect.Width))
                    maxHeight = Math.Max(maxHeight, CInt(Math.Floor(transformedRect.Height)))
                Next

                y += maxHeight
            Next
        End If
    End Sub

End Class
Completed
Last Updated: 09 Aug 2016 08:02 by ADMIN
How to reproduce check the attached project and video

Workaround: handle the UpdateCompleted event and explicitly set the properties to true

public LocalDataSourceSerializerForm()
{
    InitializeComponent();

    this.radPivotGrid1.AutoExpandColumnHeaders = false;
    this.radPivotGrid1.AutoExpandRowHeaders = false;

    this.radPivotGrid1.UpdateCompleted += radPivotGrid1_UpdateCompleted;
}

private void radPivotGrid1_UpdateCompleted(object sender, EventArgs e)
{
    this.radPivotGrid1.AutoExpandColumnHeaders = true;
    this.radPivotGrid1.AutoExpandRowHeaders = true;
}



Completed
Last Updated: 04 Sep 2019 13:28 by ADMIN
Release R3 2019
ADMIN
Created by: Dimitar
Comments: 3
Category: PivotGrid
Type: Feature Request
1

			
1 2 3 4 5