2016-10-18 8 views
1

UltraGridのチェックボックススタイルの列の値をチェックする際、BeforeRowsDeletedメソッドで次のコードを使用して、ブール値に応じて、2つの削除メソッドのうちの1つが実行されます。オペレータ= DBNull型とブール型では定義されていませんが、演算子は存在しません

しかし、私は

オペレータを言っシステム例外を取得しています=私は数回前にこのエラーを見てきました

型がDBNullとブールのために定義されますが、私はされていませんmは混乱しています。なぜなら、コードをステップ実行すると、格納される値が実際にはSystem.DBNullであることがわかりますが、等号が使用されていないからです。

このエラーはなぜ発生していますか?コードはどこが間違っていますか?

If IsDBNull(ugProducts.ActiveRow.Cells("isNew").Value) Or _ 
      ugProducts.ActiveRow.Cells("isNew").Value = True Or _ 
      ugProducts.ActiveRow.Cells("isNew").Value = Nothing Then 
     exProd = True 
    Else 
     exProd = False 
    End If 

は、私はまた、グリッドのInitializeLayout方法でプログラム値を設定しようとしたが、それは問題があなたの条件にある状況

答えて

2

を解決しませんでした。

IsDBNull(ugProducts.ActiveRow.Cells("isNew").Value)-> True

に評価次に、あなたがやろう:

ugProducts.ActiveRow.Cells("isNew").Value = True

値がDBNullであればどのように上記の文はおそらく本当であることができますか?

If IsDBNull(ugProducts.ActiveRow.Cells("isNew").Value) OrElse _ 
:コードが失敗した場合、それは DBNullある場合は、 OrElseを使用して、短いに条件を必要とする

=があるところだ)ValueDBNullであり、あなたがTrueにそれを比較してみてくださいこれは、あります

DBNullの場合は、他の比較を実行しようとせず、直ちにブロックに入ります。

+0

うん、それを選んで、ありがとう –

関連する問題