Jump to content
Sign in to follow this  
999ANDRE999

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

Recommended Posts

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:

Share this post


Link to post
Share on other 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?

Edited by 999ANDRE999

Share this post


Link to post
Share on other 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;

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.