当我添加到datagridview时,如何调用此public sub?

时间:2017-04-10 18:34:10

标签: vb.net sorting datagridview

    Public Sub DataGridView1_SortCompare(sender As Object, e As DataGridViewSortCompareEventArgs) Handles DataGridView1.SortCompare
    If e.Column.Index <> 0 Then
        Return
    End If
    Try
        e.SortResult = If(CDec(e.CellValue1) < CDec(e.CellValue2), -1, 1)
        e.Handled = True
    Catch
    End Try
End Sub

我是VB.net的新手,似乎无法弄清楚如何调用这个子

我试过了 调用DataGridView1_SortCompare()但我显然缺少一些参数。

基本上我有一个form2,它将信息添加到datagridview但是我需要在添加后按列(“num”)排序。我认为以下代码可以正常工作,但它会返回检查null的错误。

Form1.DataGridView1.Sort(DataGridView1.Columns("num"), System.ComponentModel.ListSortDirection.Ascending)

关于如何实现这一目标的任何想法?

由于

2 个答案:

答案 0 :(得分:0)

  

我有一个form2,它将信息添加到datagridview但是我需要在添加之后在列(&#34; num&#34;)上进行排序。我认为以下代码可以正常工作,但它会返回检查null的错误。

Form1.DataGridView1.Sort(DataGridView1.Columns("num"), System.ComponentModel.ListSortDirection.Ascending)

好的,所以上面的语句正在form2上执行。我猜测form2也有一个DataGridView1,因为编译器没有上述语句的问题,但是没有&#34; num&#34;柱。即使它确实有这样一个专栏,也是错误的专栏。

如果列不存在,

DataGridView1.Columns("num")将不会出错。相反,它返回Nothing(null)。您需要在Columns上引用DataGridView1的{​​{1}}属性。

Form1

答案 1 :(得分:0)

希望我理解你的问题。如果您刚刚填充了datagridview,那么如果您要创建一个基本排序方法,则可以在填充datagridview之后调用它。我为show创建了一个示例:

Public Class Form1

Public Shared Sub Sort()

    Form1.DataGridView1.Sort(Form1.DataGridView1.Columns("num"), System.ComponentModel.ListSortDirection.Ascending)

End Sub

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim dt As New DataTable
    dt.Columns.Add("ID")
    dt.Columns.Add("num")
    dt.Columns(0).AutoIncrement = True

    For value As Integer = 0 To 5
        Dim R As DataRow = dt.NewRow
        If value <> 2 Then
            R("num") = "Test" & value
            dt.Rows.Add(R)
        Else
            R("num") = ""
            dt.Rows.Add(R)
        End If
        DataGridView1.DataSource = dt

    Next
    Sort()
End Sub
End Class