Desenvolvimento - Visual Basic .NET
Usando MessageBox no ASP.NET
Tenho acompanhado em alguns fóruns de ASP.NET diversas questões envolvendo a classe MessageBox e ASP.NET. Entre elas: Por que ASP.NET não implementa MessageBox? Como faço para mostrar mensagens do tipo dialogo? ...
por Rodrigo GlauserTenho acompanhado em alguns fóruns de ASP.NET diversas questões envolvendo a classe MessageBox e ASP.NET. Entre elas:Por que ASP.NET não implementaMessageBox? Como faço para mostrarmensagens do tipo dialogo? Como faço para chamar um método no servidor a partir da escolha do usuário em um scriptclient side? e assim por diante. A respostaque costumo dar é de que a tecnologia ASP.NET é assim como outras tecnologias server side(processamento no servidor)baseada em requisições http que são stateless e pormais que o .NETframework tenha se aproximado do modo de se desenvolver WindowsFormse WebForms ainda assim há diferenças nos conceitos de programação paracada uma delas.
Mas então qual é a forma de se interagir com o cliente? Bem,nós temos algumas linguagens de script que podem sim interagir com o cliente e neste artigo mostrarei como fazer um script client side interagir com o cliente e com oASP.NET. O código do WebControl está em VB.NET, porém você poderá utilizar em seus Projetos C# ou outra linguagem do .NET Framework bastando somente importar o Controle para o toolbox.
Passo 1- Criando o Web Control MessageBox
Crie um Projeto do tipo Web Control Library em Visual Basic chamado ContoleMessageBox.
Abra o arquivo WebCustomControl1.vb e substitua seu conteúdo pelo código abaixo.
Imports System.ComponentModel Imports System.Web.UI Public Class MessageBox Inherits System.Web.UI.WebControls.WebControl Implements IPostBackEventHandler Private _Message As String Private _Key As String Private _PostBackOnYes As Boolean Private _PostBackOnNo As Boolean Public Event YesChoosed(ByVal sender As Object, ByVal Key As String) Public Event NoChoosed(ByVal sender As Object, ByVal Key As String) Public Sub ShowConfirmation(ByVal Message As String, _ ByVal Key As String, _ ByVal PostBackOnYes As Boolean, _ ByVal PostBackOnNo As Boolean) _Message = "Conf" & Message _Key = Key _PostBackOnYes = PostBackOnYes _PostBackOnNo = PostBackOnNo End Sub Public Sub ShowMessage(ByVal Message As String) _Message = Message End Sub Protected Overrides Sub OnPreRender(ByVal e As EventArgs) If Not MyBase.Page.IsClientScriptBlockRegistered( _ "MessageBox") Then Page.RegisterClientScriptBlock("MessageBox", FunctionJava1()) End If End Sub Private Function FunctionJava1() As String Dim meuPostBackOnYes As String = _ "MessageBoxTextoMensagem="""";" Dim meuPostBackOnNo As String = _ "MessageBoxTextoMensagem="""";" If _PostBackOnYes Then meuPostBackOnYes = _ Page.GetPostBackEventReference(Me, "Yes" & _Key) End If If _PostBackOnNo Then meuPostBackOnNo = _ Page.GetPostBackEventReference(Me, "No_" & _Key) End If Return "<script language=""javascript""> " & _ "var MessageBoxTipoMensagem; " & _ "var MessageBoxTextoMensagem; " & _ "if (document.all&&window.attachEvent) { " & _ "window.attachEvent(""onfocus"", MessageBoxMostrarMensagem); " & _ "} else if (window.addEventListener) { " & _ "window.addEventListener(""load""," & _ |
Este controle web encapsula funcionalidades de um MessageBox em um WebControl. Os métodos ShowMessage e ShowConfirmation enviam informações aobrowser docliente através dejavascript que é renderizado pelo controle no eventoonfocus da página (para o Internet Explorer )e load ( para o Mozilla ).
Os 2 Eventos ( YesChoosed e NoChoosed )trazem o retorno do client Side Script para o Processamento no lado servidor, isto é possível graças aoevento RaisePostBackEvent da interface IPostBackEventHandler queestamos implementando.
Este WebControl contém os seguintes eventos e métodos:
ShowConfirmation. Mostra uma Mensagem de confirmação. A
escolha do usuário por sim chamará o evento YesChoosed no Servidor e a escolha
por Cancel irá chamar o evento NoChoosed.
ShowMessage. Mostra uma Simples Mensagem.
NoChoosed. Evento disparado se usuário clicar en Cancelar e se no
Método ShowConfirmation o parâmetro PostBackOnNo estiver = true
YesChoosed. Evento disparado se usuário clicar enOk e se no
Método ShowConfirmation o parâmetro PostBackOnYes estiver = true
Agora basta compilar a solução no modo Release para gerar o assembly do Web Control.
Passo 2- Testando o Web Control MessageBox
Com o Web Control compilado vamos criar um novo Projeto ASP.NET Web Application chamado TestaMessageBoxe importá-lo no para o toolbox de componentes.
Clique com o botão direito no Toolbar do Visual Studio ->
Add/Remove Items. Irá aparecer uma janela com todos os componentes do GAC.
Clique em Browse e navegueaté a pasta onde está o assembly do Web Control
e selecione o Arquivo MessageBox.dll. Clique em Ok. O Componente deverá ter
aparecido no toolbar como está apresentado abaixo:
Adicione um novo WebForm chamado default.aspx ao projeto, altere sua propriedade
PageLayout=FlowLayout e adicione os seguintes controles:
TextBox:Id=txtTextoText="" |
Disposição dos controles na página:
A idéia desta página é de incluir itens no DropDownList através do que é digitado noTextBox e gerar uma confirmação ( Ok, Cancel ) e depois de incluído geraruma simples mensagem, o mesmo acontecendo para a exclusão.
Clique duas vezes sobre o Botão btnIncluir e adicione o seguinte código que fará que no evento click do btnIncluir apareça um prompt de confirmação para o cliente.
Private Sub btnIncluir_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnIncluir.Click Me.MessageBox.ShowConfirmation("Deseja Mesmo Incluir?", _ " Texto "Incluir", _ " Key - É a chave que identificará quem originou. True, _ " PostPackOnYes - Indica se a confirmação Ok gerará um PostBack |
Neste prompt aparecerá a janela com os botões Ok e Cancelar. No método ShowConfirmation do MessageBox podemos escolher se ambas escolhas produzirão um PostBack ou não e também adicionar uma chave para que no retorno do PostBack possamos identificar quem o causou. No exemplo abaixo iremos forçar o PostBack somente se o Usuário clicar em Ok, se isto acontecer o método MessageBox_YesChoosed qeue será criado mais abaixo será chamado.
Da mesma forma que adicionamos uma confirmação para a inclusão iremos adicionar uma para a exclusão:
Private Sub btnIncluir_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnIncluir.Click Me.MessageBox.ShowConfirmation("Deseja Mesmo Excluir?", _ "Excluir", _ True, False) End Sub |
Agora o método principal que fará o processamento da solicitação do cliente. Clique encima de YesChoosed como mostrado abaixo para gaear o evento.
Adicione o seguinte código para este evento:
Private Sub MessageBox_YesChoosed(ByVal sender As Object, _ ByVal Key As String) Handles MessageBox1.YesChoosed If Key = "Incluir" Then Me.DropItens.Items.Add(Me.txtTexto.Text) MessageBox.ShowMessage("Item Incluído") ElseIf Key = "Excluir" Then Me.DropItens.Items.Remove(Me.DropItens.SelectedItem) MessageBox.ShowMessage("Item Excluído") End If End Sub |
O Evento YesChoosed recebe a confirmação vinda do cliente e com sua chave ( key ) identificamos qual ação deveremos realizar para cada solicitação. Ou seja Inclusão e Exclusão. Após cada ação executada enviamos uma mensagem com o ShowMessage().
Neste Artigo vimos uma forma simples de emular o funcionamento do MessageBox, esta classe tão querida dos programadores WinForms. Este controle foi testado nos navegadores Internet Explorer 6.0 e no Mozilla FireFox 1.0 e em Projeto VB.NET e C#ASP.NETWeb Application com .NET Fx 1.1. Outras versões de nevegadores, linguagens e .NETframeworkdeverão ser testadas.
Downloads:
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET