USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic.Net    (ActiveX/Controles/DLL)

Título da Dica:  Criando um Custom WebControl
Postada em 6/10/2003 por ~Ð@®£@Ñ            
É muito comum em .NET vermos livros e artigos explicando a criação de WebControls. Mas a criação de WebControls que normalmente é explicada é a criação feita com uso de arquivos ASCX.

Os WebControls montados com arquivos ASCX são WebControls montados através de técnicas de composição, não herança. Além disso, apesar de serem reutilizáveis, sua reutilização envolve a própria cópia do código fonte, o arquivos ASCX e o arquivo ASCX.VB.

Além disso os componentes ASCX não são visualizados/manipulados da mesma forma que os WebControls tradicionais, o que gera dificuldades e limitações no trabalho com eles.

A alternativa é, ao invés de criarmos um ASCX, criarmos um Custom Web Control. Normalmente mantemos o Custom Web Control em um projeto separado, uma WebControl Library, que ao ser compilada se transforma em um assembly com extensão .dll

Quando criamos um projeto do tipo WebControl Library o Visual Studio já cria para nós um componente, CustomWebControl.vb, só precisamos renomea-lo e fazer a codificação do componente.

Vamos fazer um componente bem simples como primeiro exemplo. Vamos fazer um componente que nos permita exibir mensagens para o usuário na forma de msgbox, na verdade alert do javascript.

É muito comum termos mensagens assim para exibir, tal como "Registro gravado com sucesso !" e mensagens do gênero, que gostaríamos de exibir mas não gostariamos que permanecessem na página, gostariamos apenas de dar um pequeno aviso ao usuário.

O primeiro passo é definirmos o nome do nosso componente. Vamos chama-lo de mensagem. Devemos trocar o nome em 3 lugares :

O nome do arquivo .VB, que pode ser trocado através do solution explorer
O nome da classe, na linha de declaração da classe, dentro do arquivo .VB
O atributo toolboxdata precisa ser corrigido. Este atributo indica como será a tag do novo componente que estamos criando.
O próximo passo será gerar propriedades e métodos para nosso componente. Veja as propriedades e métodos que poderemos gerar :

Text : propriedade contendo a mensagem a ser exibida. Na verdade o componente padrão já possui esta propriedade montada, poderemos aproveitar isso.

ExibeMensagem : Propriedade boleana que servirá para indicar se a mensagem deve ou não ser exibida. Assim sendo, quando o componente tiver que gerar sua codificação client a cada postBack ele irá checar o valor desta propriedade para verificar se deve ou não gerar o código para exibição da mensagem.

Exibir : Um método para simplificar o processo de exibição de uma mensagem. O método Exibir recebe como parâmetro uma mensagem. Atribui a mensagem para a propriedade Text e atribui true para a propriedade ExibeMensagem.

Veja como fica o código até este ponto :

Dim _text As String
         Dim Emensagem As Boolean
<Bindable(True),Category("Appearance"), DefaultValue("")> Property [Text]() As String
         Get
              Return _text
         End Get
         Set(ByVal Value As String)
               _text = Value
         End Set
End Property
Public Property ExibeMensagem() As Boolean
         Get
               Return (Emensagem)
         End Get
         Set(ByVal Value As Boolean)
                Emensagem = Value
         End Set
End Property
Public Sub Exibir(ByVal msg As String)
         Text = msg
         ExibeMensagem = True
End Sub
O próximo passo é programarmos a renderização do componente. Chamamos de renderização o processo de geração do código HTML do componente para o client.

Encontramos no componente o método Render. Deveremos alterar o código padrão do Render para gerarmos o script que irá exibir a mensagem. Veja como fica :

Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
         If ExibeMensagem Then
              Dim f As New System.Text.StringBuilder()
              f.Append("<script for=""window"" event=""onload"">")
              f.Append("alert(""" & Text & """)"          & vbCrLf)
              f.Append("</script>")
              Me.Page.RegisterStartupScript("MSG", f.ToString)
         End If
End Sub
Agora precisaremos apenas fazer uso do componente. Depois de termos compilado a Web Control Library poderemos fazer reference para ela em uma aplicação web qualquer. Tendo feito references, deveremos clicar com o botão direito na toolbox e selecionar a instrução customize toolbox. Depois disso bastará fazer uso do componente, algo como :

Mensagem1.Exibir("Testando a exibição de mensagems")
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página