Show string property for items

4 posts, 0 answers
  1. Jens
    Jens avatar
    19 posts
    Member since:
    Aug 2014

    Posted 29 Sep 2015 Link to this post

    Hey,

    the data i'm aggregating contains a string value (eg. country) for each item.

    I want to display the string value in the PivotGrid as followed:

    There should be a column "Country" and the grouped items should display an empty string (since i see no good way to aggregate strings except maybe concatenating). When i open up the groups and drill down to a specific item, the "Country" column should display the country value for the item.

    Is there any way to achive this?

    Cheers,

    Jens

  2. Hristo
    Admin
    Hristo avatar
    714 posts

    Posted 30 Sep 2015 Link to this post

    Hello Jens,

    Thank you for writing.

    You can modify the displayed text in cells in RadPivotGrid by subscribing to the CellFormatting event and in the handler perform the required validation and where needed set the text to an empty string:
    private void radPivotGrid1_CellFormatting(object sender, PivotCellEventArgs e)
    {
        if (e.CellElement.AggregateDescription.DisplayName == "Country")
        {
            e.CellElement.Text = "";
        }
        else
        {
            e.CellElement.ResetValue(LightVisualElement.TextProperty, ValueResetFlags.Local);
        }
    }

    Additional information is available in the following documentation article: Formatting Appearance.

    I hope this helps. Should you have further questions please do not hesitate to write back.

    Regards,
    Hristo Merdjanov
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  3. UI for WinForms is Visual Studio 2017 Ready
  4. Jens
    Jens avatar
    19 posts
    Member since:
    Aug 2014

    Posted 01 Oct 2015 Link to this post

    Hey,

    thanks Hristo, but my problem is not about formatting, it's about aggregating strings.

    I've solved my problem with a custom aggregator.

    01.public class StringAggregateFunction : AggregateFunction
    02.{
    03.    protected override Cloneable CreateInstanceCore()
    04.    {
    05.        return new StringAggregateFunction();
    06.    }
    07. 
    08.    protected override void CloneCore(Cloneable source)
    09.    { }
    10. 
    11.    public override string DisplayName
    12.    {
    13.        get { return "StringAggregateFunction"; }
    14.    }
    15. 
    16.    protected override AggregateValue CreateAggregate(IAggregateContext context)
    17.    {
    18.        return new StringAggregate();
    19.    }
    20.}
    21. 
    22.public class StringAggregate : AggregateValue
    23.{
    24.    private string value = String.Empty;
    25. 
    26.    protected override object GetValueOverride()
    27.    {
    28.        return value;
    29.    }
    30. 
    31.    protected override void AccumulateOverride(object value)
    32.    {
    33.        // only set value the first time
    34.        if (this.value == String.Empty)
    35.        {
    36.            this.value = Convert.ToString(value);
    37.        }
    38. 
    39.        //this.value = this.value + Convert.ToString(value);
    40.    }
    41. 
    42.    protected override void MergeOverride(AggregateValue childAggregate)
    43.    {
    44.        var stringAggregate = childAggregate as StringAggregate;
    45.        if (stringAggregate != null)
    46.        {
    47.            if (this.value == String.Empty)
    48.            {
    49.                // first aggregation value
    50.                this.value = stringAggregate.value;
    51.            }
    52.            else if (this.value != stringAggregate.value)
    53.            {
    54.                // next aggregation differs
    55.                this.value = "Mixed";
    56.            }
    57.            else
    58.            {
    59.                // next aggregation value is the same
    60.            }
    61.        }
    62.        else
    63.        {
    64.            throw new InvalidOperationException();
    65.        }
    66.    }
    67.}

    Cheers,

    Jens

  5. Hristo
    Admin
    Hristo avatar
    714 posts

    Posted 02 Oct 2015 Link to this post

    Hello Jens,

    Thank you for writing back.

    Please excuse me for the misunderstanding. I confirm that the solution with the custom aggregate is valid and should bring the desired result.

    Should you have further questions please do not hesitate to write back.

    Regards,
    Hristo Merdjanov
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Back to Top