Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/01/2008, 13:32
p_zhero
 
Fecha de Ingreso: diciembre-2003
Mensajes: 69
Antigüedad: 20 años, 5 meses
Puntos: 0
Exclamación Clase que genera eventos

Hola a todos, les explico mi problema, en la solucion que estoyu construyedo se esta implementando el MVC, especificamente mi problema es que desde la pagina que invoco al metodo de la clase que ha de decidir que accion se debe ejecutar se genera un evento en el cual debo desplegar los datos obtenidos, pero cuando la pagina se termina de cargar no exsten datos en los controles, mas claro :

tengo la siguiente clase

Código:
Public Class CtrlManipularDatos
    Implements ICtrlEdicion
....
 'Declaro el Evento que notifica que se ejecuto la accion de busqueda
 Public Event BuscarEjecutado(ByVal elementosEncontrados As Integer) 

' Metodo con el cual se decide que accion se debe ejecutar 
'dependiendo del estado actual de la pantalla que invoca

Public Sub EjecutarAccion() Implements ICtrlEdicion.EjecutarAccion
        Select Case Me.EstadoAgregar.Accion
            Case SeguimientoEntidades.EntListas.Acciones.Consultar
                Buscar()
            Case SeguimientoEntidades.EntListas.Acciones.Eliminar
                Eliminar()
            Case SeguimientoEntidades.EntListas.Acciones.Insertar
                Insertar()
            Case SeguimientoEntidades.EntListas.Acciones.Modificar
                Modificar()
            Case SeguimientoEntidades.EntListas.Acciones.PrepararNuevo
                Me.EstadoAgregar.Accion = SeguimientoEntidades.EntListas.Acciones.PrepararNuevo
        End Select
 End Sub




 Public Sub Buscar() Implements ICtrlEdicion.Buscar
     'Ejecuto Instruccines de busqueda 
     ....
    'lanzo el evento que notifica a la aplicacion 
    'que se ejecuto la instruccion de buscar
    'enviando como argumentos el contador de los elementos encontrados

     RaiseEvent BuscarEjecutado(Me.EstadoAgregar.Elementos.Count)

 End Sub

y en la pagina en cuestion tengo el siguiente codigo
Código:
Partial Class Captura_CapturaDatos
    Inherits System.Web.UI.Page

    Dim NombreSesionControl As String = "capturaincidente"
    Dim EstadoModulo As SeguimientoEntidades.EntListas.Estados
    Dim ctrl As SeguimientoControl.IControl

    Private ReadOnly Property Controlador() As SeguimientoControl.CtrlManipularDatos
        Get
            Return CType(ctrl, SeguimientoControl.CtrlManipularDatos)
        End Get
    End Property

    Private ReadOnly Property Estado() As SeguimientoControl.EstRegistrarIncidente
        Get
            Return CType(ctrl, SeguimientoControl.CtrlManipularDatos).Estado
        End Get
    End Property

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        EstablecerEventosJS()
        CargarControlador()
        If Not Page.IsPostBack Then
            CargaDatos()
        End If        
    End Sub
    Private Sub CargarControlador(Optional ByVal recrear As Boolean = False)
        If Page.Session.Item(NombreSesionControl) Is Nothing Or recrear Then
            
            ctrl = New SeguimientoControl.CtrlManipularDatos
            ctrl.Estado = New SeguimientoControl.EstRegistrar

            'Se agrega el controlador para el evento BuscarEjecutado haciendo 
            'referencia al metodo BuscarEjecutado ubicado en la pagina

            AddHandler Controlador.BuscarEjecutado, AddressOf Me.BuscarEjecutado
           
           ' Establece el controlador en estado de consulta
           
            Controlador.EstadoConsulta()

        Else
            ctrl = CType(Session.Item(NombreSesionControl), SeguimientoControl.IControl)

        End If
        GardarControlador()
    End Sub

'Metodo que captura el evento BuscarEjecutado de la clase CtrlManipularDatos
Private Sub BuscarEjecutado(ByVal elementosencontrados As Integer)
        If elementosencontrados > 0 Then
            ObtieneDatos()
        Else
            LimpiarDatos()
            Me.txtDescripcion.Text = "No encontrado"
        End If
    End Sub

'Metodo en el cual desplegamos en la pagina los datos obtenidos
Private Sub ObtieneDatos() 
        txtObservaciones.Text = Me.Estado.Incidente.Observaciones
        ddlInstalacion.SelectedValue = Me.Estado.Incidente.IdInstalacion
        ddlLugares.SelectedValue = Me.Estado.Incidente.IdLugar
        Me.txtFechaEvento.Text = Me.Estado.Incidente.FechaIncidente
        Me.txtFechaIniRestP.Text = Me.Estado.Incidente.FechaInicioRestP
        Me.txtFechaIniRestR.Text = Me.Estado.Incidente.FechaInicioRestR
        Me.txtFechaRepP.Text = Me.Estado.Incidente.FechaReparacionP
        Me.txtFechaRepR.Text = Me.Estado.Incidente.FechaReparacionR
        Me.txtFechaTermTrabP.Text = Me.Estado.Incidente.FechaTerminoTrabP
        Me.txtFechaTermTrabR.Text = Me.Estado.Incidente.FechaTerminoTrabR
        Me.txtHora.Text = Me.Estado.Incidente.Hora
     
    End Sub

y por ultimo tengo elsiguiente codigo con el cual es invocado el metodo Ejecutar accion

Código:
    Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnBuscar.Click
        'EditaDatos(True)

        EstadoBotones(SeguimientoEntidades.EntListas.Estados.Consulta)
        

        Controlador.EstadoConsulta()

        EstableceParametrosBusqueda()

        'Se invoca al metodo que ejecuta la búsqueda
        Ejecutar()


        
    End Sub

    Private Sub Ejecutar()
        ObtieneEstado()
        
        'Se ejecuta la accion y en respuesta se lanza un evento
        Controlador.EjecutarAccion()
        	      
        GardarControlador()
        
        EditaDatos(False)
    End Sub

En otras palabras la secuencia es la siguiente

se instacia la clase CtrlManipularDatos en la variable ctrl la cual es accesada mediante la propiedad Controlador de la pagina, se agrega el controlador al evento BuscarEjecutado

Cuando ocurre un click en el boton buscar se establece el modo del controlador en modo de consulta y se ejecuta el metodo Ejecutar en el cual se ejecuta el metodo Controlador.EjecutarAccion que para para este caso es consultar

Al ejecutarse EjecutarAccion de la clase CtrlManipularDatos se decide que se ejecute el metodo de buscar de la clase, dentro de la cual despues de ejecutar las acciones correspondientes se lanza el evento BuscarEjecutado
el cual es capturado por el metodo BuscarEjecutado de la pagina que invoco almetodo de la clase, dentro del cual si los elementos encontrados fueron mayor a 0 se se pintan los datos encontrados dentro de los controles correspondientes de la pagina o en su defecto si no se encontraron datos que despleiqgue yuna leyenda dentro de uno de esos controles.. UFFF (me canse jeje), es ahi que aunque se hayan encontrado datos y todo se haya ejecutado correctamente, cuando se despliega la pagina no hay ningun dato en los controles

despues de tanto rollo espero haberme explicado y que alguien me pueda ayudar

cual quier idea o comentario sera agradecido y

gracias por el tiempo que se tomen en leer mi problema