Datagridview学习心得之一处理列中间有空值时的排序
时间:2010-12-25 来源:峰再起时
Datagridview做为一个数据显示的控件,它本身就有对列自动排序的功能,这是一个很方便也很实用的功能,但是有一个问题,如果当前列存在有空值时,排序就会发生错误,导致程序抛出异常不能继续运行,那我们有没有好的办法解决它呢,因为我们不能决定数据为不为空,所以只能从控件这一边入手了。在.NET2.0里,为我们提供了一个SortCompare事件,这个事件是在发生排序时触发,它就是我们将要用来解决这个问题的关键,看以下代码:
Private SubDataGridView1_SortCompare(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewSortCompareEventArgs)Handles DataGridView1.SortCompare
If e.CellValue1.ToString= "" Ande.CellValue2.ToString = "" Then '取得前后两个值,如果都为空,就返回相等的结果
e.SortResult = 0
ElseIf e.CellValue1.ToString= "" Then ‘如果第一个值为空,则返回第一个值小于第二个值。
e.SortResult = -1
ElseIf e.CellValue2.ToString= "" Then ‘如果第二个值为空,则返回第一个值大于第二个值。
e.SortResult = 1
Else
e.SortResult = String.Compare(e.CellValue1, e.CellValue2) ‘都不为空时,按正常排序操作
End If
e.Handled = True ‘最后示意本次事件已正常处理。
End Sub
通过对SortCompare事件的编程,我们可以很好的判断排序发生之前的两个值的大小,也可以避免遇到空值时的异常。