Hello,
I work with version 2016 R3.
I have a series of Data like this
DataType | DataPoint | Value
I displayed correctly all values with either DataType and DataPoint in column or row
Now I want to use different string format according to which DataType it corresponds.
I found the StringFormatSelector on the PropertyAggregateDescription and I thought I could use it like any [...]Selector but I don't have in input of the SelectStringFormat method the CellAggregateValue associated.
For now the only way to do that is by using a converter on the CellTemplateSelector of the PivotGrid
(I'm currently implementing it, it's not working as expected yet)
Is there a best way to achieve different string format according to a celldata ?
Regards
Thomas
4 Answers, 1 is accepted
Hello
Here is an update with my tests
The solution with a converter in the CellTemplateSelector is working but only for to display values in the PivotGrid.
If I export the PivotGrid in Excel it doesn't work.
So I think the StringFormatSelector of the PropertyAggregateDescription is the solution but how can I use it ?
Thank you
Regards,
Thomas
The StringFormatSelector class doesn't provide functionality to check the current cell value which is applied. Overriding the SelectStringFormat() method will return one format for all cell values in the specified PropertyAggregateDescription. The SelectStringFormat() can be used the following way.
<pivot:PropertyAggregateDescription PropertyName="Net" > <pivot:PropertyAggregateDescription.StringFormatSelector> <local:MyStringFormatSelector PropertyName="Net" /> </pivot:PropertyAggregateDescription.StringFormatSelector> </pivot:PropertyAggregateDescription><pivot:PropertyAggregateDescription PropertyName="Quantity" > <pivot:PropertyAggregateDescription.StringFormatSelector> <local:MyStringFormatSelector PropertyName="Quantity" /> </pivot:PropertyAggregateDescription.StringFormatSelector></pivot:PropertyAggregateDescription>public class MyStringFormatSelector : StringFormatSelector{ public string PropertyName { get; set; } protected override string SelectStringFormat() { if(PropertyName == "Net") { return "$$#.###"; } else { return "**#.###"; } } protected override void CloneCore(Cloneable source) { var original = (MyStringFormatSelector)source; this.PropertyName = original.PropertyName; } protected override Cloneable CreateInstanceCore() { return new MyStringFormatSelector(); }}Regards,
Dinko
Progress Telerik
Hello,
Thank you for you reply
We found a better solution that works for the display, the excel export and the Copy/Paste feature
We added in our data a new property that represent the value formatted as a string
DataType | DataPoint | Value | ValueFormatted
Then because we only have 1 value for the rows and columns, we specified an AggregateFunction that return directly the object read from the our dataSource (here our string formatted) with this code below and a custom AggregateFunction using this AggregateValue
public class ValueAggregate : AggregateValue{ private object _value; protected override object GetValueOverride() { return _value; } protected override void AccumulateOverride(object value) { _value = value; } protected override void MergeOverride(AggregateValue childAggregate) { }}
Then everything works as planned.
We couldn't use the StringFormatSelector because we only had one PropertyAggregateDescription for different string format.
Thank you.
Hervouet Thomas
I am happy to hear that you have found a solution which fits in your main application. And thank you for sharing it. This way the community can benefit from it.
Regards,
Dinko
Progress Telerik
