2017-02-18 9 views
0

データグリッドビューをsqlデータベースから動的にロードしました。その特定の列の値に基づいて、私はセルの背景色を変更する必要があります。Windows C#アプリケーションのDatagridビューセルの書式設定の問題

enter image description here

しかし、このように表示され、

private void Grid_Log_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
     { 
      // Set the background to red for negative values in the Balance column. 
      if (Grid_Log.Columns[e.ColumnIndex].Name.Equals("MStatus") || Grid_Log.Columns[e.ColumnIndex].Name.Equals("Status")) 
      { 
       if (e.Value.Equals("SUCCESS")||e.Value.Equals("Closed")) 
       { 
        //e.CellStyle.BackColor = Color.Red; 
        //e.CellStyle.SelectionBackColor = Color.DarkRed; 
        //Grid_Log.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Red; 
        Grid_Log.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red; 
       } 
      } 
     } 

私は、コードの上にしようとしているが、それでも、そのが生じます。

+0

私はあなたがこれを見てみるべきだと思います。http://stackoverflow.com/questions/26994457/c-sharp-red-cross-in-datagridview –

+0

あなたの投稿コードが赤に背景色を変更します'MStatus'カラムの値が「SUCCESS」の場合は、' Status'カラムの値が「Closed」の場合、バックグラウンドが赤に変わります。 'e.Value'がnullである可能性があるかどうかを確認する必要があります。私は、写真が何を表すと考えられているのか、セルかグリッド全体がわからないのですか? – JohnG

+0

johnGありがとう、私はそれを修正しました。e.Valueがnullの場合に発生します。 – Karthik

答えて

0
private void Grid_Log_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
     { 
      if (Grid_Log.Columns[e.ColumnIndex].Name.Equals("MStatus") || Grid_Log.Columns[e.ColumnIndex].Name.Equals("Status")) 
      { 
       if (e.Value!=null) 
       { 
        if (e.Value.Equals("SUCCESS") || e.Value.Equals("Closed")) 
        { 
         //e.CellStyle.BackColor = Color.Red; 
         //e.CellStyle.SelectionBackColor = Color.DarkRed; 
         //Grid_Log.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Red; 
         Grid_Log.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red; 
        } 
       } 
      } 
     }