2016-04-24 252 views
2

我已嘗試使用此代碼,但它對我無效。如何更改行基於單元格值的背景顏色

for (int i = 0; i < GerezCmdsGridView.Rows.Count; i++) 
{ 
    if (Convert.ToDouble(GerezCmdsGridView.Rows[i].Cells[7].Value) == 0 || GerezCmdsGridView.Rows[i].Cells[7].Value == DBNull.Value) 
    { 
     GerezCmdsGridView.Rows[i].DefaultCellStyle.BackColor = Color.Red; 
    }    
} 

enter image description here

+0

你是什麼意思_does不work_完全?你得到任何異常或錯誤信息?你可以請更具體嗎? –

+0

是的,它說,對象不能從DBNULL轉換爲其他類型。 和我應該使用哪個事件代碼? –

回答

1

我認爲的條件的順序是有問題的。您首先嚐試將該值轉換爲兩倍。 然後您檢查DBNull.Value

所以,你應該切換順序:

if (GerezCmdsGridView.Rows[i].Cells[7].Value == DBNull.Value || 
    Convert.ToDouble(GerezCmdsGridView.Rows[i].Cells[7].Value) == 0) 

如果你第一次嘗試轉換爲DBNull(Convert.ToDouble(DBNull.Value))的,將引發異常:

System.InvalidCastException:對象不能從DBNull轉換爲其他類型。

+0

非常感謝,它的作品! –

0

作爲補充,如果此列BoundField,你可以設置它的NullDisplayText property,以及當你在該列DBNull的值,顯示其價值。

相關問題