如何从vb.net中的datagridview对负值和正值进行排序?

时间:2015-02-16 22:25:18

标签: vb.net sorting datagridview

我对编码比较陌生,我希望有人可以帮我在datagridview中对一列负值和正值进行排序。它没有连接到数据表,因为我只读取文本文件中的值,它使用逗号分隔每个数据位并在datagridview中显示它。我试过使用这段代码:

DGV.Sort(DGV.Columns(2), System.ComponentModel.ListSortDirection.descending)

然而,它只根据值的第一个整数进行排序,并忽略负号,例如,如果该列下的单元格具有

3
-5
-2

它会排序,所以它将是

-5
3
-2

我如何排序以便考虑负号?

1 个答案:

答案 0 :(得分:0)

目前,网格中的值是文本,而不是数字。因此,网格将它们排序为文本而不是数字。如果您希望网格自动将它们排序为数字,那么它们实际上必须是数字。

你似乎并不是说你想要标准的数字排序。你似乎在说你想要的是按绝对值排序。这意味着与您要求的完全相反,即您希望它忽略负号并仅按数字排序。无论文字或数字如何,这都不会自动发生。

在这种情况下,您必须处理网格的SortCompare事件。在事件处理程序中,您可以将文本转换为数字,取绝对值并自行比较,例如

Dim num1 As Integer
Dim num2 As Integer

If Integer.TryParse(CStr(e.CellValue1), num1) AndAlso Integer.TryParse(CStr(e.CellValue2), num2) Then
    'Order the numbers based on their absolute value.
    e.SortResult = Math.Abs(num1).CompareTo(Math.Abs(num2))
Else
    'At least one of the values is not a number so consider them equivalent for sorting purposes.
    e.SortResult = 0
End If

e.Handled = True