DataGridView在Decimal列中使用null进行排序

时间:2014-06-12 12:17:16

标签: vb.net datagridview

问题是空值大于十进制值0.00,因此排序问题按升序排列。

Private Sub dgvTable_SortCompare(ByVal sender As Object, ByVal e As DataGridViewSortCompareEventArgs) Handles dgvTable.SortCompare
    If e.Column.Index = 4 Then
        e.SortResult = System.Decimal.Compare(todecimalnull(e.CellValue1), todecimalnull(e.CellValue2))
    End If

    e.Handled = True
End Sub

Function todecimalnull(ByVal cellvalue)
    If cellvalue = "" Then
        Return "0.0"
    Else
        Return cellvalue
    End If
End Function

1 个答案:

答案 0 :(得分:0)

我建议使用0而不是null来填充datagrid视图。 可能有理由将值保留为空,但这些可能比排序问题的重量小。

这是一个很好的SO线程,首先要使用非空值进行排序。

How to order by column with non-null values first in sql

可能需要自定义排序 - 而不是单击列,或重载排序列以应用此逻辑。 (这可能吗?)