Datagridview学习心得之一处理列中间有空值时的排序

           在vb.net中,datagridview是最常用到的一个控件,特别是在对数据库编程中,常用来显示各种数据集,所以对Datagridview使用就显得格外重要,对它的熟练使用常常能有一些意想不到的效果,下面我介绍几则我在学习过程中学到的技巧:

                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事件的编程,我们可以很好的判断排序发生之前的两个值的大小,也可以避免遇到空值时的异常。

posted @ 2010-12-25 21:05  峰再起时  阅读(1166)  评论(0编辑  收藏  举报