Fórum Fazer um IF de coluna Data #513936
17/03/2015
0
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
Curtir tópico
+ 0Posts
18/03/2015
Randrade
Gostei + 0
18/03/2015
Jair Souza
Agradeço o interesse em ajudar.
Gostei + 0
18/03/2015
Jothaz
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;
}
Gostei + 0
18/03/2015
Thiago Santana
Gostei + 0
18/03/2015
Jair Souza
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150318-173303.jpg[/img]
Gostei + 0
18/03/2015
Randrade
Gostei + 0
18/03/2015
Jair Souza
Gostei + 0
18/03/2015
Thiago Santana
Gostei + 0
18/03/2015
Jair Souza
Gostei + 0
19/03/2015
Thiago Santana
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
Gostei + 0
19/03/2015
Jothaz
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.
Gostei + 0
19/03/2015
Jair Souza
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...
Gostei + 0
19/03/2015
Jothaz
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.
Gostei + 0
19/03/2015
Thiago Santana
O problema é que você está utilizando o evento CellFormatting
Gostei + 0
19/03/2015
Jair Souza
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]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)