I am using just a simple DataGridView to hold a bunch of data (Funny that).
I have decimals in a particular column. But when it comes to ordering by that decimal column, it orders it incorrectly. For example :
Starting order might be :
- 0.56
- 3.45
- 500.89
- 20078.90
- 1.56
- 100.29
- 2.39
The ending order would be :
- 0.56
- 100.29
- 1.56
- 20078.90
- 2.39
- 3.45
- 500.89
As you can see, it orders it starting from the first number. And then orders it in this way.
I thought possibly I could set the column to a different "ColumnType" and that may automatically do it. But there is no "Numeric" or "Decimal" column types.
I was on MSDN looking up the issue, and I could find the "sort" method that I can use on the DataGridView. But the explanation was a bit over my head, and the examples didn't use numbers, only text so I couldnt see how I was supposed to switch things up.
Any help would be much appreciated.
Best Answer
You can solve this by adding a handler for the SortCompare event on the DataGridView with the following code:
From MSDN there is this description of the SortResult values:
Note that in my test bed the only numeric column was the first (with index 0) so that is why I have the check on the column index.
Also, depending on your needs and data you may want to refine my code - for example, my code will throw an exception if for some reason you have non numeric data in your column.
You have probably seen it, but here is a link to the MSDN page on customising the DataGridView sorting. As you say, they only deal with text.