2016-04-24 12 views
2

Ich habe versucht mit diesem Code, aber es funktioniert nicht für mich.Wie ändere ich die Zeile Hintergrundfarbe basierend auf Zelle Wert

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

Was meinst du mit _wird nicht genau funktionieren? Sie erhalten eine Ausnahme oder Fehlermeldung? Können Sie bitte genauer sein? –

+0

ja es heißt, Objekt kann nicht von DBNull zu anderen Typen umgewandelt werden. und Welches Ereignis sollte ich für diesen Code verwenden? –

Antwort

1

Ich denke, die Reihenfolge der Bedingungen problematisch ist. Sie versuchen zuerst, den Wert in double zu konvertieren. Dann überprüfen Sie für DBNull.Value.

So sollten Sie die Reihenfolge wechseln:

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

Wenn Sie sich zuerst ein DBNull (Convert.ToDouble(DBNull.Value)) eine Ausnahme ausgelöst wird, zu konvertieren versuchen:

System.InvalidCastException: Objekt kann nicht sein, Umwandlung von DBNull in andere Typen.

+0

Vielen Dank, es funktioniert !!! –

0

Als Ergänzung, wenn diese Spalte BoundField ist, können Sie einstellen, es ist NullDisplayText property auch, welcher Wert zu zeigen, wenn Sie DBNull Wert für diese Spalte zu bekommen.