Hi,
I have a custome aggregate function defined as follows. I would like to access the column name on which this particular function is being called from so that the function can act on that particular column. How can that be done? Currently I have hard-coded the column name('Score') which I do not want to do.
Thanks
I have a custome aggregate function defined as follows. I would like to access the column name on which this particular function is being called from so that the function can act on that particular column. How can that be done? Currently I have hard-coded the column name('Score') which I do not want to do.
class
Summation : AggregateFunction<BindableDynamicDictionary,
int
>
{
public
Summation()
{
this
.AggregationExpression = items => FindSum(items);
}
private
int
FindSum(IEnumerable<BindableDynamicDictionary> source)
{
var itemCount = source.Count();
int
sum = 0;
if
(itemCount >= 1)
{
var values = source.Select(i => i[
"Score"
]);
foreach
(
int
str
in
values)
{
sum = sum + str;
}
}
return
sum;
}
}
Thanks
5 Answers, 1 is accepted
0
Hello,
I am afraid the generic aggregate function does not hold a reference on what the invoking column is and such an information is not available.
Regards,
Dimitrina
Telerik
I am afraid the generic aggregate function does not hold a reference on what the invoking column is and such an information is not available.
Regards,
Dimitrina
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
0
Manoj
Top achievements
Rank 1
answered on 04 Mar 2015, 04:59 PM
Is there any other Aggregate function available which holds this reference?
Your documentation to generic aggregate functions returns a 404 page not found error :
http://docs.telerik.com/devtools/wpf/api/html/allmembers_t_telerik_windows_data_aggregatefunction_2.htm
Thanks.
Your documentation to generic aggregate functions returns a 404 page not found error :
http://docs.telerik.com/devtools/wpf/api/html/allmembers_t_telerik_windows_data_aggregatefunction_2.htm
Thanks.
0
Hello,
I apologize for this invalid link presented in our documentation after the recent migration of the help. I will resolve it, meanwhile the correct link is:
http://docs.telerik.com/devtools/wpf/api/html/t_telerik_windows_data_aggregatefunction_2.htm
As it turns out, there is not such a function, all the built-in ones inherit from AggregateFunction.
Regards,
Dimitrina
Telerik
I apologize for this invalid link presented in our documentation after the recent migration of the help. I will resolve it, meanwhile the correct link is:
http://docs.telerik.com/devtools/wpf/api/html/t_telerik_windows_data_aggregatefunction_2.htm
As it turns out, there is not such a function, all the built-in ones inherit from AggregateFunction.
Regards,
Dimitrina
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
0
Manoj
Top achievements
Rank 1
answered on 04 Mar 2015, 05:47 PM
I am lost now. As I mentioned, all the columns and the type of aggregation are determined by the user at run-time.
I cannot hard code the column value on the aggregate functions.
Is there any other way I can achieve this functionality? Also curious how the inbuilt functions like count or average work without predetermined column name.
Any help would be appreciated!
Thanks!
I cannot hard code the column value on the aggregate functions.
Is there any other way I can achieve this functionality? Also curious how the inbuilt functions like count or average work without predetermined column name.
Any help would be appreciated!
Thanks!
0
Hello,
You can also refer to our Source Code available for download from your account. The aggregate functions are presented under path ..\\Core\Data.
As to the question on how the AverageFunction knows the property to calculate on, it will be done based on the DataMemberBinding specified. This is the respective code involved:
Regards,
Dimitrina
Telerik
You can also refer to our Source Code available for download from your account. The aggregate functions are presented under path ..\\Core\Data.
As to the question on how the AverageFunction knows the property to calculate on, it will be done based on the DataMemberBinding specified. This is the respective code involved:
private
void
SetSourceFieldToAggregateFunctionsIfNeeded()
{
foreach
(var selectorFunction
in
this
.AggregateFunctions.OfType<EnumerableSelectorAggregateFunction>()
.Where(f => f.SourceField ==
null
))
{
selectorFunction.SourceField =
this
.GetDataMemberName();
}
}
- - - -
public
static
string
GetDataMemberName(
this
IDataFieldDescriptor descriptor)
{
var name =
string
.Empty;
if
(descriptor !=
null
)
{
var dataBinding = descriptor.DataMemberBinding;
name = BindingToExpressionHelper.ExtractNameFromBinding(dataBinding, descriptor.ItemType);
if
(
string
.IsNullOrEmpty(name))
{
name = ExtractNameFromUniqueName(descriptor);
}
}
return
name;
}
Regards,
Dimitrina
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.