• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

ASP.NET : Referência a WebControls no Código JavaScript

alucarD

GF Bronze
Membro Inactivo
Entrou
Set 23, 2006
Mensagens
15
Gostos Recebidos
0
Noticias ASP.NET : Referência a WebControls no Código JavaScript

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 objecto naquela posição.

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


alucarD
 
Topo