Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NanePin

Colorir Célula do DataGrid ao Clicar

Recommended Posts

Pessoal,Eu precisava que toda vez que o usuário clicar num célula específica do DataGrid, que a cor dela mude para um outra cor, de acordo com a cor anterior, numa ordem especifica q eu definirei.As células estão inicialmente sem cor.> Ex.:> Ordem da cores: Azul, Verde, Vermelho> > 1º Click na célula: Azul> > 2º Click na célula: Verde> > 3º Click na célula: Vermelho> > 4º Click na célula: Sem cor> > E assim sucessivamente....neste loop.Lembrando que estou usando WebForm.----------------//----------------------------Eu fiz desta maneira abaixo, em JavaScript, mas só que ficou meio inviável porque ele usa getElementById, e com isso faz a busca em todos os elementos da pagina, tornando muito lento, pois minha grid tem umas 50 colunas e umas 30 linhas:No HTML da página aspx inserir: <script> function MudaCor(id) { //alert(document.getElementById(id).style.backgroundColor); if(document.getElementById(id).style.backgroundColor == "blue") { document.getElementById(id).style.backgroundColor = "green"; } else if(document.getElementById(id).style.backgroundColor == "green") { document.getElementById(id).style.backgroundColor = "red"; } else if(document.getElementById(id).style.backgroundColor == "red") { document.getElementById(id).style.backgroundColor = "white"; } else { document.getElementById(id).style.backgroundColor = "blue"; } } </script>No Codebehind mais especificamente no evento ItemDataBound coloque:if( e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Footer ) { e.Item.Cells[0].ID = e.Item.Cells[0].ClientID; e.Item.Cells[0].Attributes.Add("onClick","MudaCor('" + e.Item.Cells[0].ClientID + "')"); }Quem souber uma maneira de otimizar esse código ou se tem outra maneira de fazer o que estou querendo, me ajudem, pq estou neste problema tem um tempão.Desde já agradecida.NanePin.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tem alguma coisa dando erro?não vi erro algum no codigo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tem alguma coisa dando erro?

 

não vi erro algum no codigo...

<{POST_SNAPBACK}>

Mas eu não disse que havia erro. Eu disse que o código que eu usei ta muito lento e precisava que ele fosse otimizado (se fosse possível) ou que alguem tivesse uma ideia melhor para me ajudar a resolver o meu problema.

 

Ok?!?!

 

Att,

 

NanePin.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas está lento para carregar os dados, ou na hora q aparece na tela (browser)?pois se for no browser, creio q fique um pouco lento mesmo, pois o JS tem q se encarregar de atribuir os efeitos em todas as linhas e colunas... ai qualquer coisa tente fazer com menos colunas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está lento na hora em que clico na célula para mudá-la de cor. Pois quem vai pintar é o script em Javascript que eu mostrei acima. Como o script usa getElementById, isso está gerando a lentidão para a troca de cor, pois ele vai vasculhar todos os elementos da pagina até encontrar a célula desejada para fazer a troca da cor. O que eu queria saber é se tem uma melhor maneira de fazer isso ou se tem uma outra forma (mais otimizada) de identificar o elemento sem ter que vasculhar um por um todos os elementos da pagina.Será que existe alguma forma de eu fazer isso sem ser por JavaScript??? Pelo CodeBehind eu consigo pintar a coluna toda, mas pintar uma célula especifica não consegui. Se tiver alguma idéia de como fazer pelo CodeBehind, seria uma boa saída!!E quanto a diminuir o número de colunas não tem como, eu preciso de todas elas.Att,NanePin.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem como você gerar a página e passar o HTML?? pra eu ver como fica aqui... se eu encontrar alguma coisa sobre eu posto...attcarlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.