3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(.Net)DataGridViewでセル値がNULL(DBNull)や空文字時に表示するテキストを変えたい

要件としては、DataGridView でセルの値が null,DBNull,空文字時に "値が入っていません" というメッセージを表示するというものです。

最初、 DOBON:DataGridViewでセルの値がnullやDBNull.Valueの時に表示するテキストを変更するで紹介されているように、DefaultCellStyle.NullValue プロパティを使おうと思っていました。

Me.dgv.Columns("a").DefaultCellStyle.NullValue = "値が入っていません"

しかし、この場合だと、セル値が null,DBNull の時しか使えないようです。

結局、CellFormatting イベントを使って、if文で判断するようにしました。

'dgvはDataGridViewコントロール

Private Sub dgv_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgv.CellFormatting

'ホスト名列に値が無い場合は未使用と表記する。

If dgv.Columns("a").Index = (e.ColumnIndex) _

AndAlso (dgv.Rows(e.RowIndex).Cells("a").Value Is DBNull.Value _

OrElse String.IsNullOrEmpty(dgv.Rows(e.RowIndex).Cells("a").Value)) Then

e.Value = "未使用です"

End If

End Sub

空文字もNULLとみなす要件の時は注意が必要ですね。