Foros del Web » Programación para mayores de 30 ;) » .NET »

Conseguir que un control Web propio reaccione al evento Click

Estas en el tema de Conseguir que un control Web propio reaccione al evento Click en el foro de .NET en Foros del Web. Buenas compañeros, os quiero pedir ayuda sobre hacer un evento clickpara un control, se que será algo sencillo, pero como es la primera vezque lo ...
  #1 (permalink)  
Antiguo 19/01/2009, 10:36
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Conseguir que un control Web propio reaccione al evento Click

Buenas compañeros, os quiero pedir ayuda sobre hacer un evento clickpara un control, se que será algo sencillo, pero como es la primera vezque lo hago no estoy muy seguro y no me sale.

El caso es que con Vb.net 2005 he creado un control Web, que todo en sies un botón. Es decir, mi control es un botón personalizable.
Ahora lo que quiero hacer es que todo el control en si, tenga implementado el evento Click.
Com mi control hereda de button, pues el control ya tiene el eventoClick, pero no hace ni caso, suponto que habrá que crearle un delegado,una escucha, etc etc, pero no se como hacerlo.

Un poquito de ayuda al respecto. Gracias Wink
  #2 (permalink)  
Antiguo 19/01/2009, 13:12
 
Fecha de Ingreso: septiembre-2003
Mensajes: 20
Antigüedad: 20 años, 8 meses
Puntos: 2
Sonrisa Respuesta: Conseguir que un control Web propio reaccione al evento Click

Hola, bueno lo primero que tienes que hacer es que tu control implemente la interface IPostBackEventHandler

Y el método RaisePostbackEvent es donde va hacer el llamando del evento.

Si utiliza type = submit con esto basta pero si es button o otra cosa

Tienes que utilizar onclick="javascript:__doPostBack('ID-control', 'Argumentos')"


Entonces debes llamar a este método this.Page.RegisterPostBackScript() para registrar el __doPostBack
  #3 (permalink)  
Antiguo 20/01/2009, 03:07
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Conseguir que un control Web propio reaccione al evento Click

Cita:
Iniciado por desgraciado Ver Mensaje
Hola, bueno lo primero que tienes que hacer es que tu control implemente la interface IPostBackEventHandler

Y el método RaisePostbackEvent es donde va hacer el llamando del evento.

Si utiliza type = submit con esto basta pero si es button o otra cosa

Tienes que utilizar onclick="javascript:__doPostBack('ID-control', 'Argumentos')"


Entonces debes llamar a este método this.Page.RegisterPostBackScript() para registrar el __doPostBack
Me temo que voy a necesitar una explicación más concreta o un ejemplito porque me pierdo.
Gracias por el aporte
  #4 (permalink)  
Antiguo 20/01/2009, 05:07
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Conseguir que un control Web propio reaccione al evento Click

Con éste código funciona perféctamente

Código:
Imports System
Imports System.Web.UI
Imports System.Collections
Imports System.Collections.Specialized

Namespace CustomControls

    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> Public Class MyButton
        Inherits Control
        Implements IPostBackEventHandler

        ' Define the Click event.
        Public Event Click As EventHandler


        ' Invoke delegates registered with the Click event.
        Protected Overridable Sub OnClick(ByVal e As EventArgs)
            RaiseEvent Click(Me, e)
        End Sub


        ' Define the method of IPostBackEventHandler that raises change events.
        Public Sub RaisePostBackEvent(ByVal eventArgument As String) _
        Implements IPostBackEventHandler.RaisePostBackEvent

            OnClick(New EventArgs())
        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
La cosa está es que en el Render, si en lugar de pintar un input de tipo submit, pinto una tabla (El botón es una tabla con varias celdas) pues ya no funciona el click. De alguna forma debo indicarle el evento click a la tabla, supongo que será con eso que me pones arriba, pero si me puedes especificar un poco más mejor.

Gracias
  #5 (permalink)  
Antiguo 21/01/2009, 02:31
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Conseguir que un control Web propio reaccione al evento Click

Oh no... no tengo respuesta.
Espero que me podáis ayudar
  #6 (permalink)  
Antiguo 22/01/2009, 02:39
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Conseguir que un control Web propio reaccione al evento Click

Si hago un control que herede diréctamente de Button funciona perféctamente el evento click, pero porque convierte digamos el control en un botón en si. Lo que quiero y necesito no es eso.

A ver si me explico mejor.

Eso funciona perféctamente. ¿Por qué? Porque no pinto nada y al heredar de botón, diréctamente digamos el control tiene pintado ya un botón, y claro, genera el evento click perféctamente.

Yo no quiero que saga un botón, sino que lo que estoy haciendo es pintar mi propio botón.
A traves de writer.Write("") voy pintando lo que es mi botón. Es decir, en Protected Overrides Sub Render meto algo así como

Writer.Write("<table>")
Writer.Write("<tr>")
Writer.Write("<td>")
Writer.Write("PULSA")
Writer.Write("<td>")
Writer.Write("</tr>")
Writer.Write("</table>")

A través de éste código, hago que mi control sea una tabla con sus celdas y que eso en sí se mi botón personalizado. Evidentmente mi control es bastanta más complejo que el evento que he puesto, ya que contiene bastantes celdas, incluidas 9 imágenes para configuarar los 8 bordes de un botón, más el del centro.

Ahora teniendo en cuenta que mi control es una tabla pintada de éste modo, lo que tengo que hacer es implementar el EventoClick del control, de forma que cuando pulse sobre la tabla, salte el evento click como en tu ejemplo, como si de un botón se tratase.

Creo que ahora me he explicado mejor. A ver si podéis ayudarme.
  #7 (permalink)  
Antiguo 22/01/2009, 04:43
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 10 meses
Puntos: 5
Respuesta: Conseguir que un control Web propio reaccione al evento Click

No se si te entiendo muy bien, pero lo que puedes probar es a atacharte al evento onClick de la tabla y que este llame al delegado que has creado para hacer el click del botón... no se si me explico muy bien...
  #8 (permalink)  
Antiguo 22/01/2009, 12:56
 
Fecha de Ingreso: septiembre-2003
Mensajes: 20
Antigüedad: 20 años, 8 meses
Puntos: 2
Respuesta: Conseguir que un control Web propio reaccione al evento Click

exacto solo tienes que agregar onclick

seria algo asi.

writer.Write("<table>")
writer.Write("<tr>")
writer.Write("<td onclick=\"javascript:__doPostBack("+ this.ID +", '')\">")
writer.Write("PULSA")
writer.Write("<td>")
writer.Write("</tr>")
writer.Write("</table>")
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:39.