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)
关于如何实现这一目标的任何想法?
由于
答案 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