Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

999ANDRE999

[Resolvido] Alterar a cor de celula de uma GridView dinamicamente

Mensagens Recomendadas

999ANDRE999

Boa tarde,

Estou a utilizar uma grid composta por 12 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 a verde.

Alguém me pode ajudar? :confused:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
999ANDRE999

Vivam,

Já consegui fazer umas evoluções.

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.

Pensei em usar uma variável

DateTime agora = DateTime.Now;

mas não sei como manipula-la dentro do if.

Alguma sugestão?

Editado por 999ANDRE999

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
999ANDRE999

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?

// cores para aprovação
				    if (project == "2")
						    e.Row.Cells[1].BackColor = Color.OrangeRed;
				    if (project == "1")
						    e.Row.Cells[2].BackColor = Color.OrangeRed;

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
999ANDRE999

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.