quarta-feira, 11 de maio de 2011

Usando o atributo OnClientClick do Button

Alguns controles em ASP.NET possuem uma propriedade OnClientClick, que é utilizada para executar um script do lado do cliente (navegador). Em se tratando do controle Button, ao receber um clique, o botão antecipa a execução do evento Click passando antes pela rotina escrita na propriedade OnClientClick

Veremos um exemplo bem simples.

Abra o Visual Studio e crie um novo Web Site (File > New > Web Site > ASP.NET Web Site) em linguagem C#.


Aproveitando a página Default.aspx, que foi criada automaticamente, clique na guia Source e altere o código fonte HTML da página conforme a listagem abaixo.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Enviar" onclick="Button1_Click"
            onclientclick="return confirm('Deseja enviar?');" />
        <br />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    </div>
    </form>
</body>
</html>

O atributo OnClientClick do Button1 foi preenchido com uma rotina em linguagem Javascript, para exibir uma caixa de diálogo com dois botões (OK e Cancel). Volte para a guia Design da página, dê um duplo-clique sobre o botão “Enviar” e escreva o código abaixo no evento Click.

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = "Os dados foram enviados com sucesso!";
}

O exemplo está pronto, rode a aplicação e clique no botão “Enviar”. Uma mensagem é exibida sobre a janela, e ao clicar no botão Cancel a rotina é cancelada. Caso o usuário clique no botão OK, a rotina escrita no evento Click é executada do lado do servidor.



A idéia do exemplo, é permitir que o usuário confirme a postagem de dados, antes da rotina de persistência ser executada. Por enquanto é só. 

Fico por aqui e até a próxima!

Nenhum comentário:

Postar um comentário

Deixe aqui seu comentário