Sort Datatable in Crystal Report


I have created a datatable with 10 lines of data in it.

I then sort the datatable.
dtResult.DefaultView.Sort = "avgmp desc";

I then bind the datatable to a datagrdview.
The results display correctly in a datagridview.

However, if I display this datatable in a Crystal Report the results are unsorted.

Why? and how do I order it for the report?
Who is Participating?
kingjelyConnect With a Mentor Commented:
Hi is okay,
I'm sure you can do it in C# but im not too sure how..

I do my sorting programatically in crystals,

By 3 different sort options, do you mean Asc, Desc, Orig order,
Or 3 different sort options fields, as in,  by UNITS, PRICE, DATE ?


Hi there,
Put the field on the report,
Click the record sort expert  a-z button up the top..
Then add your {Table.avgmp} field in and choose 'Descending.'

Does this work?



Add your {Table.avgmp} field.

Go to Group Expert, Add {Table.avgmp} field as a Group and choose 'Options' and Choose 'Origional Order'
Then righ click and suppress the group GH1#{Table.avgmp}.

Cloud Class® Course: CompTIA Cloud+

The CompTIA Cloud+ Basic training course will teach you about cloud concepts and models, data storage, networking, and network infrastructure.

elmbrookAuthor Commented:
Hi King

Yes that did work. Never realised you could sort it from the report... My bad.

However, Can I do this programically? Before I display the results I have 3 different sorting options for the user.
elmbrookAuthor Commented:
Hi King

I figured it out myself.

The code to sort is below:
                FieldDefinition fd;
                fd = cryRpt.Database.Tables[0].Fields[_sortfield];
                cryRpt.DataDefinition.SortFields[0].Field = fd;
                cryRpt.DataDefinition.SortFields[0].SortDirection = CrystalDecisions.Shared.SortDirection.DescendingOrder;

Where _sortfield is my field to sort on. as in Units, Price, Date.

Thank you for pointing me in the right direction. I will credit the points to you anyway.
This is VB.Net code, but it should give you an idea of programmatically sorting...

'ReportDocument.SetParameterValue("Sort Criteria", "My Sort Field")
'Dim crSortField As CrystalDecisions.CrystalReports.Engine.SortField
'ReportDocument.DataDefinition.SortFields(1).SortDirection = CrystalDecisions.Shared.SortDirection.DescendingOrder
 You could do without the parameter if you aren't going to offer dynamic sorting to the end user.  I have a web link that talks about this if I can find it...

If you want to see how it works,
By 3 different sort options, do you mean Asc, Desc, Orig order,

Make a NEW parameter called {?SORTORDER}
'save and close'

In your group expert where you have your group {Table.avgmp} go to options, check Use formular X2

put this formular in;

If {?SORT} = 'ASC' then crAscendingOrder else
if {?SORT} = 'DESC' then crDescendingOrder else

Refresh your report and type in ASC, or DESC or leave it blank.

So thats how you order it for the report  ;)  
Hi rgn2121 and i gave you the answers in VB and Crystals and u also got it,
I'm not sure if you ment to award No POint or not, but we did help!
If you ment to it's okay, atleast you got the answer for both now
haha no worries, is a bit wierd?!

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.