2017-05-03 11 views
0

特定の行を非表示にするには以下のサブを使用しますが、フィルターをかけたDataGridviewに戻って表示行インデックスを循環させようとすると、列の先頭から(1,2,3 ...というように)順番に進むのではなく、列の最下行に表示されます。Datagridview行非表示の行選択ランダム

フィルタの後の現在の設定を上部の表示行に設定できましたが、それは違いはありません。

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

それはあなたが現在のセルにNOTHING

の値を与えるしかし、あなたは同じものではありませんこれを検証するためにIsDBNullを使用

完全に正常です。

はがDBNullオブジェクトとオブジェクト指向プログラミング言語 に何もの概念を混同しないでください。オブジェクト指向プログラミング 言語では、Nothingは、オブジェクトへの参照がないことを意味します。 DBNulは、未初期化バリアントまたは存在しないデータベース カラムを表します。

出典: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 
関連する問題