jueves, 7 de febrero de 2008

Activando Eventos con controles desarrollados

Ya desarrollamos un pequeno control, pero ahora como hacemos para que este vaya al servidor, y ejecute una accion en este, es decir, cuando nosotro hacemos click sobre algo queremos que nuestro control vaya a realizar un metodo en el codebehind.


Por ejemplo nosotros desarollamos en control llamado customerControl (button) y queremos darle la posibilidad a los desarrolladores que usen este control, de programar un evento, en este caso el evento click.

manos a la obra.
Namespace MyControl
<ToolboxData("<{0}:testControl runat=""server"" ID='testControl1'/>")> _
Public Class testControl : Inherits Control
Implements IPostBackEventHandler
Public Event Click As EventHandler

Protected Overridable Sub OnClick(ByVal e As EventArgs)
RaiseEvent Click(Me, e)
End Sub

Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements IPostBackEventHandler.RaisePostBackEvent
OnClick(EventArgs.Empty)
End Sub

Protected Overrides Sub Render(ByVal output As HtmlTextWriter)
output.Write(("<INPUT TYPE = submit name = " & Me.UniqueID & " Value = 'Click Me' />"))
End Sub
End Class
End Namespace


Implements IPostBackEventHandler
nuestra clase de control tiene que ser implementada por esta clase, para que podamos capturar los eventos genrados en el cliente.

Public Event Click As EventHandler
con esta linea definimos el evento click de esta forma al hacer soble click sobre el objeto , nos aparerecera el metodo click, el encabezado de ese metodo seria algo asi.
Protected Sub testControl1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles testControl1.Click

Protected Overridable Sub OnClick(ByVal e As EventArgs)
Definimos el metodo un sub (llamado por algunos), ojo que este metodo tiene que ser sobre-escribible(Overridable). esta funcion recibe en E todos los argumentos.

RaiseEvent Click(Me, e)
llamamos internamente al evento click, y le pasamos nuestro objeto, es decir, ME o THIS. y los argumentos que nos llegaron como parametros.

Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements IPostBackEventHandler.RaisePostBackEvent
basicamente es un Sub, que es implementado por IPostBackEventHandler.RaisePostBackEvent

OnClick(EventArgs.Empty)
llamamos al sub con argumentos vacios.



En nuestro aspx, al momento de arrastrar el control se despliega lo siguiente:



en mi caso en el aspx.vb deje lo siguiente:
Protected Sub testControl1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles testControl1.Click
MsgBox("este es un click desde un testControl")
End Sub

No hay comentarios:

Publicar un comentario