Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1014
Assunto : ASP.NET
Titulo: Referência a WebControls no Código JavaScript

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Frequentemente precisamos utilizar no javascript o nome dos nossos webControls, porém nem sempre isso é uma tarefa fácil : Quando nossos webControls encontram-se dentro de containers, tal como quando usamos master pages, login view ou outros casos semelhantes, o id do webControl se altera no client.

Talvez vocês já tenham ouvido falar que os webControls possuem uma propriedade chamada clientid, que contém o nome que o controle irá realmente ter quando estiver no client, mas como inserir este clientID no meio de um trecho de javascript como esse :

<script language="javascript">
alert($get("aqui entra o nome do objeto").value);
</script>

A solução inicial pode parecer simples, veja :

<script language="javascript">
alert($get("<%# obternome() %>").value);
</script>

no code-behind criamos a função obternome :

Protected Function obternome() As String
Return (Button1.ClientID)
End Function

Mas ocorre um problema : Expressões utilizando o "#" apenas são processadas quando é solicitado um databind() no objeto dentro do qual elas encontram-se. Neste exemplo a expressão acima nunca seria processada.

Mas poderiamos resolver da seguinte forma :

<div id="divteste" runat="server">
<script language="javascript">
alert($get("<%# obternome() %>").value);
</script>
</div>

E no codeBehind :

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

divteste.DataBind()

End Sub

Desta forma forçamos o databind em uma "div" que na verdade não contém absolutamente nada além do javascript e geramos o nome client do nosso objeto naquela posição.

Uma dúvida comum : Por que não usar diretamente o page.databind() ? Simples : Porque além de ser muito mais pesado o page.databind() pode executar o vinculo de dados de algum objeto que não desejamos executar naquele momento, por isso o uso de page.databind não é aconselhavel.

Outra observação importante : como isso é para resolver problemas justamente causados por containers, esta dica http://www.bufaloinfo.com.br/dicas.asp?cod=810 sobre o findcontrol pode ser importante.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 1/31/2017 1:49:00 PM
nome: eyUSgkBgevBgKRKn
email: derby451@hotmail.com
comentário:
GUpTej http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 11:52:00 AM
nome: WGnloiemzkxWdmPUElR
email: derby451@hotmail.com
comentário:
USTZjH http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 11:47:00 AM
nome: bEENYCvzsRtripQ
email: jogcbfn@hotmail.com
comentário:
s5twg2 http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/1/2017 4:52:00 AM
nome: zTynVlgZfZuhJ
email: jfvynms4281rt@hotmail.com
comentário:
kemyWf http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com

data: 4/28/2014 8:09:00 AM
nome: Lucas
email: pi.can.s@hotmail.com
comentário:
oi

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br