Anúncios

Interagindo código Javascript com eventos server-side utilizando a interface ICallbackEventHandler

Existem momentos em que precisamos de maior controle sobre os eventos de nossa página e de sua integração com chamadas do lado do servidor. Neste instante acabamos encontrando uma barreira entre a execução de código JavaScript  e chamadas server-side devido a falta de integração entre os dois lados.

Atualmente, a tecnologia Asp.Net possui diversos modos de integrar chamadas JavaScript e chamadas server-side, neste exemplo demonstro como fazer chamadas server-side através da implementação da Interface ICallbackEventHandler.

Ao utilizarmos a interface ICallbackEventHandler devemos implementar dois métodos: GetCallbackResult e RaiseCallbackEvent. O método RaiseCallbackEvent será o método referência para as chamadas client-side e o método GetCallbackResult será a porta de saída das informações processadas do lado do servidor.

Download de exemplo de implementação:
Neste link existe um exemplo pronto de implementação: Download de exemplo

Modo de implementação:
Utilize o comando ClientScript.GetCallbackEventReference para fazer a ligação de uma função client com um método server-side. A utilização deste comando deverá funcionar como o cõdigo abaixo:

protected void Page_Load(object sender, EventArgs e)
{
string callbackRef =
Page.ClientScript.GetCallbackEventReference(this, “args”,
“ClientCallbackFunction”, “”);

string callbackScript =
“function ServerCallBackFunction(args) {” + callbackRef + “}”;

Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
“MyServerCall”,
callbackScript,
true);
}

Implementação da interface ICallbackEventHandler:

public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
#region ICallbackEventHandler Members

private string _callBackBrigde;

public string GetCallbackResult()
{
return _callBackBrigde;
}

public void RaiseCallbackEvent(string eventArgument)
{
_callBackBrigde = eventArgument;

_callBackBrigde += ” – ” + DateTime.Now.ToString(“dd/MM/yyyy hh:mm:ss”);
}

#endregion
}

Exemplo de código client-side:

<html xmlns=”http://www.w3.org/1999/xhtml”>
<head runat=”server”>
<title></title>
<script type=”text/javascript”>
function ClientCallbackFunction(args) {
lblMessage.innerText = args;
}
</script>
</head>
<body>
<form id=”form1″ runat=”server”>
<div>
<br />
<asp:TextBox ID=”txtSampleJavaScript” runat=”server”
OnBlur=”ServerCallBackFunction(this.value)”></asp:TextBox>
<br />
<asp:Label runat=”server” ID=”lblMessage”></asp:Label>
</div>
</form>
</body>
</html>
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: