Fazer um IF de coluna Data

17/03/2015

0

Preciso fazer "Se valor da coluna tal for igual a data", Como fazer esta parte dentro do parênteses " (DateTime...)) " :

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if(e.Value != null && e.Value.Equals(DateTime))
            {
                DataGridViewRow row = dataGridView1.Rows[e.RowIndex];

                row.DefaultCellStyle.ForeColor = Color.Red;

            }
        }
Jair Souza

Jair Souza

Responder

Posts

18/03/2015

Randrade

Explique um pouco melhor o que você precisa, pois dessa forma não está claro, e dificultando possíveis respostas.
Responder

18/03/2015

Jair Souza

Então, se o valor da coluna 3 for igual a um formato de data por exemplo assim "00/00/0000", deixar o forecolor desta LINHA de cor diferente das demais.
Agradeço o interesse em ajudar.
Responder

18/03/2015

Jothaz

Pesquise por:

DateTime.TryParse

Ou DateTime.Parse:

    string strDate = obj.ToString();
     try 
      {
            DateTime dt = DateTime.Parse(strDate);
            if(dt != DateTime.MinValue  && dt != DateTime.MaxValue)
                  return true;
            return false;
       }
       catch
        {
               return false;
         }
Responder

18/03/2015

Thiago Santana

tente utilizar o Convert.ToDateTime
Responder

18/03/2015

Jair Souza

Ainda não consegui...na imagem abaixo mostra exatamente o resultado esperado com o código que tenho...MAS, para uma data específica, como fazer para qualquer data ?

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150318-173303.jpg[/img]
Responder

18/03/2015

Randrade

Tente olhar este tutorial, se não conseguir, avise que coloco um exemplo funcional para você. Desculpe colocar apenas o link, é que estou com pouco tempo no momento.
Responder

18/03/2015

Jair Souza

É... foi deste link que comecei meu código...mesmo assim obrigado.
Responder

18/03/2015

Thiago Santana

Se for pra comparar com a data atual, basta chamar DateTime.Now
Responder

18/03/2015

Jair Souza

Não é a data atual, são datas variadas de devolução de locações...
Responder

19/03/2015

Thiago Santana

Se for Web Application utilizando Webform você deverá utilizar o método RowDataBound!
Com ele você pode capturar as informações e manipular várias coisas, se for Windows Form não lembro qual o evento correto do GridView
Responder

19/03/2015

Jothaz

Sinceramente não entendi o que você quer!

Se for quando o campo estiver preenchido deve vir vermelho senão deve ficar preto, por que você não teste null?

Ou na entrada de dados o campo data pode ser preenchido com valores que não sejam data? Se for assim, no meu ponto de vista a modelagem esta equivocada, mas como modelagem é igual fiofó cada um tem a sua kkkkkk, você pode contornar a situação usando o comando que postei DateTime.TryParse, basta ter um pouco de trabalho e criar um método para validar:




//O teste fica assim, talvez tenha de usar o .ToString, testa ai.
 if(e.Value != null && ValidaData(e.Value))



//Método para validar se o conteúdo é DateTime
private bool ValidaData(String ValorData)
{
	if (DateTime.TryParse(badInput, out dateTime2))
	{
	    return true;
	}
	else
	{
	    return false;
	}
} 


Não testei o exemplo acima, então esta passível de conter erro. É só uma ideia de como pode ser feito.
Responder

19/03/2015

Jair Souza

Inicialmente eu tinha o código assim :

 private void locacaoDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            for (int i = 0; i < locacaoDataGridView.Rows.Count; i++)

                if (!String.IsNullOrEmpty((string)locacaoDataGridView.Rows[i].Cells[3].Value.ToString()))
                {
                   e.CellStyle.ForeColor = Color.Red;
                }
        }


Mas assim ficam todas as linhas color.red...
Responder

19/03/2015

Jothaz

Inicialmente eu tinha o código assim :

 private void locacaoDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            for (int i = 0; i < locacaoDataGridView.Rows.Count; i++)

                if (!String.IsNullOrEmpty((string)locacaoDataGridView.Rows[i].Cells[3].Value.ToString()))
                {
                   e.CellStyle.ForeColor = Color.Red;
                }
        }


Mas assim ficam todas as linhas color.red...


Você não respondeu o que perguntei! Como não sei claramente qual a regra nem conheço seu ambiente fica difícil ajudar!

O código que você postou deixar vermelho todos os campos diferentes de null ou empty.

Qual a regra que você que implementar?

Qual o conteúdo do campo?
É uma data?
Ou pode ser uma Data ou um outro valor que não seja uma data?

Se a regra para deixar vermelho for ser diferente de null/empty e deve ser uma Data válida é só implementar o código que postei.
Responder

19/03/2015

Thiago Santana

Jair acho que você está utilizando o evento errado do seu GridView!
O problema é que você está utilizando o evento CellFormatting
Responder

19/03/2015

Jair Souza

Inicialmente eu tinha o código assim :

 private void locacaoDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            for (int i = 0; i < locacaoDataGridView.Rows.Count; i++)

                if (!String.IsNullOrEmpty((string)locacaoDataGridView.Rows[i].Cells[3].Value.ToString()))
                {
                   e.CellStyle.ForeColor = Color.Red;
                }
        }


Mas assim ficam todas as linhas color.red...


Você não respondeu o que perguntei! Como não sei claramente qual a regra nem conheço seu ambiente fica difícil ajudar!

O código que você postou deixar vermelho todos os campos diferentes de null ou empty.

Qual a regra que você que implementar?

Qual o conteúdo do campo?
É uma data?
Ou pode ser uma Data ou um outro valor que não seja uma data?

Se a regra para deixar vermelho for ser diferente de null/empty e deve ser uma Data válida é só implementar o código que postei.




Primeiro desculpe se ficou confuso, recapitulando :

O campo é somente data, veja na imagem :

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150319-151428.jpg[/img]
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar