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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar