ASP.NET - Controlar eventos con un web user control

 
Vista:

Controlar eventos con un web user control

Publicado por oswaldo (9 intervenciones) el 09/07/2008 20:26:25
Hola,

Alquien sabe si se puede (y como) hacer un web user control, con combos y cajas de texto para realizar un filtro y un botón que al hacer click me llene algún control que se encuentra en la webform que lo contiene; es decir que me ejecute funciones, procesos o eventos que se encuentran en la webform?

Yo he estado intentando de varias formas, pero como se ejecuta primero el postback me limpia los controles antes de que se ejecute el evento click del botón del user control!

También lo intenté con el response.redirect y concatenandole los parámetros antes del que los limpie con el postback, pero en la primer ejecución con el request me truena pq esos valores siempre vienen vacíos la primera vez.

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Controlar eventos con un web user control

Publicado por Khristian (335 intervenciones) el 10/07/2008 18:40:55
Simple....

En el UserControl, creas los eventos publicos.

En los Sub donde se ejecutan las tareas y necesitas que dicho evento sea capturado, usas Raise Event.

Con eso, ya en el webform donde usas el usercontrol, trabajas con el evento del control.

Por ejemplo.

Usare seudo codigo mezclado con codigo, porque no me acuerdo bien las sistanxis.

-----------------------------------------------------------------------------------------------------------------
UserControl: ctlListaCiudades
Este control lo que hace es obtener el ID de una ciudad determinada, obviamente, previa seleccion del Pais.
El control tendra 2 combos. Uno para el pais, y otro para la ciudad.
Cuando se selecciona un pais, se debe actualizar la lista de ciudades (esto no esta materia del ejemplo)

Evento que se lanzará cuando el usuario ha seleccionado una ciudad.
Public Event CiudadSeleccionada

Propiedad donde almacenaremos el ID de la ciudad seleccionda
Public ReadOnly IdCiudad as Integer=0

Evento que se lanza cuando el usuario ha seleccionado una ciudad. Previa seleccion del pais.
Como en este ejemplo, no hay calculos ni nada complejo, solo queremos detectar cuando el usuario seleccionó una ciudad, a fin de que en el form donde es usado el control, podamos manejar dicho evento en caso de necesitarlo.

Private sub cboListaCiudades_Click
IdCiudad = cboListaCiudades.SelectedValue
RaiseEvent CiudadSeleccionada
End Sub

-------------------------------------------------------------------------------------------------------------------

En el webForm, para el ejemplo, haremos un msgBox (local) con el ID de la ciudad seleccionada.

Simplemente usamos el evento del user control.

Private sub ctlListaCiudades1_CiudadSeleccionada
msgBox ctlListaCiudades1.IdCiudad
End Sub

------------------------------------------------------------------------------------------------------------------

Eso seria... talvez hayan detalles pero hice esto asi a la rapida.

Saludos

http://khristian-net.blogspot.com/

http://khristian-rodriguez.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Controlar eventos con un web user control

Publicado por oswaldo (9 intervenciones) el 10/07/2008 22:35:17
Hola...

Tengo un problemita

El user control tiene 2 combos, una caja de texto y un botón.

ya declare el evento y en el evento del botón puse lo siguiente:

Public Event ConsultaFiltro()

Protected Sub btnFiltrar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnFiltrar.Click
RaiseEvent ConsultaFiltro()
End Sub

--------------------------------------------------------------------------------------------------------------
en la webform cree el siguiente procedimiento:

Private Sub wucFiltroSeguimiento1_ConsultaFiltro()
///sin código
End Sub

En este procedimiento le puse un brakepoint solo para ver si cachava el RaiseEvent ConsultaFiltro() del user control.
--------------------------------------------------------------------------------------------------------------

El problema es que ejecuta bien el Protected Sub btnFiltrar_Click en el user control pero ya no se regresa a la webform, no se que me falte por hacer para que lo cache.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Controlar eventos con un web user control

Publicado por oswaldo (9 intervenciones) el 11/07/2008 01:16:02
Listo, ya quedó!
Como decía Khristian, solo había que acomodar unas cosas y auqmentar otras, pero en escencia es lo que mandó.

Les pasó el dato:

La declaración del evento en el user cotnrol es así:
**
Public Event ConsultaFiltro As EventHandler

el procedimiento se requeire especificar de la siguiente manera:
**
Protected Sub btnFiltrar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnFiltrar.Click
RaiseEvent ConsultaFiltro(Me, e)
End Sub

y es aquí cuando se regresa a la webform para realizar lo que requeiran
--------------------------------------------------------------------------------------------------------------
en la webform se requeire especificar en el procedimiento hay que especificar el control y el evento (en este caso user control)
**
Private Sub wucFiltroSeguimiento1_ConsultaFiltro() Handles wucFiltroSeguimiento1.ConsultaFiltro
// fucnionalidad
End Sub

Y listo.

Muchas gracias Khristian!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Controlar eventos con un web user control

Publicado por Leon (1 intervención) el 04/10/2011 23:02:21
Estimados,


Como adición a éste posting que esta excelente....

En la línea

Public Event ConsultaFiltro As EventHandler

puedes trabajar con eventos de otros objetos (EventHandler)

como por ejemplo:

DataGridCommandEventHandler
MenuEventArgs

Como digo todo depende de los eventos del control que deseas coger en el aspx.


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar