我使用下面的子命令使特定的行不可见,但是当我返回到已过滤的datagridview并尝试循环显示可见的行索引时,它会从列顶部转到列的底部而不是按顺序进行(1,2,3 ...等等)。
我能够将过滤器后的当前设置设置为顶部可见行,但这并没有什么不同。
Private Sub BR_VAL_NO_SHOW()
Dim dgv As DataGridView = Me.dgvStockCheck_Available
Dim cm1 As CurrencyManager = CType(BindingContext(dgv.DataSource), CurrencyManager)
Try
For i As Integer = 0 To dgv.Rows.Count - 1
If IsDBNull(dgv.Rows(i).Cells("MATERIAL").Value) Then
Exit Try
Else
If Not dgv.Rows(i).Cells("MATERIAL").Value = "SLAT" Then
dgv.CurrentCell = Nothing
cm1.SuspendBinding()
dgv.Rows(i).Visible = False
End If
End If
Next
Catch ex As Exception
End Try
End Sub
答案 0 :(得分:0)
这是完全正常的
您为当前单元格提供NOTHING
但是你使用IsDBNull
来验证哪个不是一回事。
不要在面向对象的编程中混淆 Nothing 的概念 具有DBNull对象的语言。在面向对象的编程中 language, Nothing 表示缺少对象的引用。 DBNul l代表未初始化的 或不存在的数据库 列。强>
来源:https://msdn.microsoft.com/en-us/library/system.dbnull(v=vs.90).aspx
因此,解决方案可能只是检查是否可见。
If dgv.Rows(i).Visible = False Then
'Not Visible
Exit Try
Else