Jump to content

Alterar a cor de celula de uma GridView dinamicamente


Go to solution Solved by 999ANDRE999,

Recommended Posts

Posted

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? 😕

Posted (edited)

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
Posted

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;
  • Solution
Posted

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.

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
×
×
  • 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.