Alterar a cor de celula de uma GridView dinamicamente c#

help me

Power Member
Vivam,

Boa tarde,

Estou a utilizar uma grid composta por 2 colunas:

O que pretendo é mudar a cor da(s) celula(s) consuante a data...
Ou seja, se a data da grid (que é apresentada através de uma chamada à BD) = data do dia a cor fica vermelha, se não a cor de fundo fica como está.

Código:
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
       {
               // quando montar as linhas do tipo DADOS
               if(e.Row.RowType== DataControlRowType.DataRow)
               {
                        string project = DataBinder.Eval(e.Row.DataItem,"project").ToString();
                       
                         // cores para aprovação
                       if(project =="2")
                                e.Row.Cells[1].BackColor= Color.OrangeRed;
                       if(project =="1")
                                e.Row.Cells[2].BackColor= Color.OrangeRed;
                 }
         }

O problema é que atualmente ele analiza a coluna 1 e se algumas das celulas contiver o valor "2" pinta de vermelho, e analisa a coluna 2 e se contiver em alguma celula o valor "1" pinta de vermelho também. O que eu pretendia era nas colunas não analisar um valor em concreto, mas sim uma data, ou seja, se o valor de uma célula ainda não tiver chegado à data do dia (p.e. hoje dia 19-07-2016) fica verde, se a celula contiver a data do dia ou passar, ficar a vermelho.

Alguém me pode ajudar?
confused.gif
 
Reparei agora que quando tenho mais que uma célula na mesma coluna com o mesmo valor, o código só coloca o fundo de acordo com a condição imposta, numa das células dessa coluna e não em todas com o mesmo valor.

faltará alguma coisa neste if?

Código:
// cores para aprovação
                                           if (project == "2")
                                                            e.Row.Cells[1].BackColor = Color.OrangeRed;
                                           if (project == "1")
                                                            e.Row.Cells[2].BackColor = Color.OrangeRed;
 
Pessoal já resolvi o problema de quando tenho mais que uma célula na mesma coluna com o mesmo valor, o código só coloca o fundo de acordo com a condição imposta, numa das células dessa coluna e não em todas com o mesmo valor.

Agora isto está tudo a funcionar com valores int. Necessito de fazer o mesmo para data.

Pensei em usar uma variável:
DateTime agora = DateTime.Now;
mas não sei como manipula-la dentro do if com operadores > = < <= ou >= visto ser string.
 
Já consegui. converti string para inteiro

Código:
string agora = DateTime.Now.ToString("yyyy/MM/dd");
           agora = agora.Replace("-", "");
           int agora_int =Convert.ToInt32(agora);
 
Back
Topo