2008年5月23日 星期五

DataGridView - 儲存格條件格式化

若要在DataGridView中提供儲存格的條件格式化, 例如, 檢查庫存量為零時, 儲存格背景色顯示為紅色.
這代表要對儲存格進行繪製作業, 可以在CellPainting 事件處理.

DataGridViewCellPaintingEventArgs 事件參數,提供ColumnIndex, RowIndex, Value, CellStyle, PaintBackground 等屬性, 可以利用這些屬性是處理引發事件的儲存格.

範例中我使用e.ColumnIndex 找到控制項對應的欄位名稱, 並確定是在進行記錄而不是標題處理(e.RowIndex >0), 才檢查儲存格是否為0. 透過CellStyle的BackColor 改變目前儲存格的背景色.

   Private Sub ProductsDataGridView_CellPainting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles ProductsDataGridView.CellPainting
If e.ColumnIndex <= 0 Then
Return
End If
Dim column As DataGridViewColumn
column = ProductsDataGridView.Columns(e.ColumnIndex)

If column.DataPropertyName = "UnitsInStock" AndAlso e.RowIndex > 0 _
AndAlso e.Value = 0 Then
e.CellStyle.BackColor = Color.Red
End If

End Sub


圖1: 庫存量為零的儲存格, 背景色為紅色.

01

2 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
  2. 請問,如果遇到空字串時該怎麼處理呢? (DBNull)
    e.Value = 0 判斷時遇到空字串或型別不符合時,除錯就出現錯誤了。

    回覆刪除