You set the SortMemberPath to:
columnTemplate.SortMemberPath = path +
This means the sorting will be done based on this property. You say this property is an object which could be anything (string/int/double/list etc.). It seems the column is not able to resolve the actual type of the bound data and that is why it is not able to sort the data. You will have to specify the correct GridViewDataColumn.DataType.
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos
and start improving your app based on facts, not hunches.