Esta seção apresenta a manipulação de eventos do ASP.NET.
Um evento é uma ação ou ocorrência, como um clique do mouse, um pressionamento de tecla, um movimento do mouse ou qualquer notificação gerada pelo sistema. Um processo se comunica por meio de eventos. Por exemplo, interrupções são eventos gerados pelo sistema. Quando ocorrem eventos, os aplicativos podem respondê-los e gerenciá-los.
Os eventos no ASP.NET são gerados na máquina do usuário e processados no servidor. Por exemplo, um usuário clica em um botão exibido em um navegador. Um evento de clique é gerado. O navegador trata esse evento do lado do cliente enviando-o ao servidor.
O servidor possui uma sub-rotina que descreve o que fazer quando um evento é gerado; isso é chamado de manipulador de eventos. Portanto, quando as informações do evento são passadas para o servidor, ele verifica se o evento click está associado a um manipulador de eventos. Se relevante, o manipulador de eventos será executado.
Os manipuladores de eventos ASP.NET normalmente usam dois parâmetros e retornam nulo. O primeiro parâmetro representa o objeto que dispara o evento e o segundo parâmetro é o parâmetro do evento.
A sintaxe geral de um evento é:
private void EventName (object sender, EventArgs e);
Os eventos de aplicação mais importantes são:
Application_Start – Gerado quando um aplicativo ou página da web é iniciado.
Application_End - Gerado ao interromper um aplicativo ou página da web.
Da mesma forma, os eventos de sessão mais comumente usados são:
Session_Start – Disparado quando o usuário solicita inicialmente uma página da aplicação.
Session_End – Gerado quando a sessão termina.
Eventos comuns de página e controle são:
DataBinding – gerado quando um controle está vinculado a uma fonte de dados.
Disposto – Gerado quando a página ou controle é liberado.
Erro – É um evento de página que ocorre quando há uma exceção não tratada.
Init – Gerado ao inicializar uma página ou controle.
Load – Gerado quando uma página ou controle é carregado.
PreRender – Gerado quando a página ou controle é exibido.
Unload – Gerado quando uma página ou controle é descarregado da memória.
Todos os controles ASP.NET são implementados como classes e geram eventos quando o usuário executa uma ação específica neles. Por exemplo, quando um usuário clica em um botão, um evento ‘Click’ é gerado. Para lidar com eventos, existem propriedades integradas e manipuladores de eventos. Os aplicativos de manipulação de eventos são codificados para responder a um evento e tomar as medidas apropriadas sobre ele.
Por padrão, o Visual Studio cria um manipulador de eventos que inclui uma sub-rotina que manipula a cláusula. Esta cláusula nomeia os controles e eventos que o programa manipula.
Tag ASP para controle de botão:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
Aplicativo de manipulação de eventos para evento Click:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.ClickEnd Sub
Um evento também pode ser codificado sem uma cláusula Handles. O manipulador deve então receber o nome do evento apropriado que se ajusta à propriedade do controle.
Tag ASP para controle de botão:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click" />
Aplicativo de manipulação de eventos para evento Click:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)End Sub
Os eventos de controle comuns incluem:
evento | propriedade | controlar |
---|---|---|
Clique | Ao clicar | botão, botão de imagem, botão de link, bitmap de imagem |
Comando | Ao comando | botão, botão de imagem, botão de link |
Texto alterado | OnTextChanged | caixa de texto |
SelecionadoIndexChanged | OnSelectedIndexChanged | Menu suspenso, caixa de listagem, lista de botões de opção, caixa de listagem com caixas de seleção |
VerificadoAlterado | OnCheckedChanged | caixa de seleção, botão de opção |
Alguns eventos fazem com que o formulário seja postado de volta no servidor imediatamente; eles são chamados de eventos de retorno de chamada. Por exemplo, clique em eventos como Button.Click.
Alguns eventos não são enviados de volta ao servidor imediatamente. Eles são chamados de eventos sem retorno de chamada.
Por exemplo, eventos de alteração ou eventos de seleção como TextBox.TextChanged ou CheckBox.CheckedChanged. Esses eventos que não são de retorno de chamada podem ser imediatamente chamados de volta definindo sua propriedade AutoPostBack como true.
O evento padrão para objetos de página é o evento load. Da mesma forma, todo controle possui um evento padrão. Por exemplo, o evento padrão para um controle de botão é o evento Click.
Manipuladores de eventos padrão podem ser criados no Visual Studio simplesmente clicando duas vezes em um controle no modo Design. A tabela a seguir mostra os eventos padrão para uma lista de controles comuns:
controlar | evento padrão |
---|---|
Controle de publicidade (AdRotator) | Anúncio criado |
Lista de itens (BulletedList) | Clique |
Botão | Clique |
Controle de calendário (Calendário) | Seleção alterada |
Caixa de seleção | VerificadoAlterado |
Lista de caixas de seleção | SelecionadoIndexChanged |
Grade de dados | SelecionadoIndexChanged |
Lista de dados | SelecionadoIndexChanged |
Lista suspensa | SelecionadoIndexChanged |
Hiperlink | Clique |
Botão de imagem | Clique |
Ponto de acesso (ImageMap) | Clique |
Botão de hiperlink (LinkButton) | Clique |
Lista suspensa de seleção única ou múltipla (ListBox) | SelecionadoIndexChanged |
Menu | MenuItemClick |
Botão de rádio | VerificadoAlterado |
Grupo de botões de opção (RadioButtonList) | SelecionadoIndexChanged |
Exemplo
Este exemplo inclui uma página simples com rótulos de controle e um controle de botão. Quando ocorrerem eventos de página, como Page_Load, Page_Init, Page_PreRender, etc., uma mensagem será enviada, que será exibida pelo controle de rótulo. Quando um botão é clicado, o evento Button_Click é gerado, enviando também uma mensagem exibida pelo rótulo.
Crie um novo site e arraste um controle Label e um controle Button da caixa de ferramentas Controles. Usando as propriedades da janela, defina os IDs de controle como .lblmessage e .btnclick adequadamente. Defina a propriedade de texto do controle de botão como "Clique".
Arquivo de marcação (.aspx):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="eventdemo._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>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblmessage" runat="server" > </asp:Label> <br /> <br /> <br /> <asp:Button ID="btnclick" runat="server" Text="Click" onclick="btnclick_Click" /> </div> </form> </body></html>
Clique duas vezes na visualização de design e vá para o código por trás do arquivo. O evento Page_Load é criado automaticamente sem nenhum código. Escreva a seguinte linha de código autoexplicativa:
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace eventdemo { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblmessage.Text += "Page load event handled. <br />"; if (Page.IsPostBack) { lblmessage.Text += "Page post back event handled.<br/>"; } } protected void Page_Init(object sender, EventArgs e) { lblmessage.Text += "Page initialization event handled.<br/>"; } protected void Page_PreRender(object sender, EventArgs e) { lblmessage.Text += "Page prerender event handled. <br/>"; } protected void btnclick_Click(object sender, EventArgs e) { lblmessage.Text += "Button click event handled. <br/>"; } }}
Executar página. As tags mostram eventos de carregamento de página, inicialização de página e visualização de página. Clique no botão para ver o efeito: