Necesito pasar datos entre controles, concretamente quiero actualizar el contenido de un usercontrol cuando hago click en un gridview ubicado en otro usercontrol.
1 Respuesta
Respuesta de andresr16
1
1
andresr16, Ingeniero Desarrollador en VB,asp,Tecnologia
Para poder hacer eso que quieres te recomiendo que uses delegados. Los delegados son métodos a los cuales tu le delegas una acción y se ejecutara cuando el evento de la clase que lo genera se dispare. Declaración del delegado: public abstract class UIControls : System.Web.UI.UserControl { // Now, create a public event "FireEvent" whose type is our FireEventHandler delegate. /// /// Delegado del Evento, para intercambio e interconexion /// entre los UserControls /// public delegate void onReloadHandler(object sender, ControlsEventArg e); /// /// Objeto de delegado para Disparara el evento /// public onReloadHandler onReload; Esto va en el control que quieres que dispare el evento, en tu caso la grilla, sobra decirte que debes hacer que tu usercontrol herede de la clase UIControls que reescribimos arriba. OnReload(this, Values); //esta linea por ejemplo podria ir en el evento click de un boton del control que contiene el delegado, es importante que la coloques en el evento que quieres que dispare el delegado para que cuando esto suceda la pagina que contiene el control sepa que es lo que debe hacer y ahora en la pagina que contine los dos controles colocas esto Selecter1.onReload += new UIControls.onReloadHandler(Cambio_Seleccion);//debe ir en el load para mi selecter1 es una instancia de selecter, un control en el que define el delegado como te mensione anteriormente. cambio seleccion es una funcion que esta en la pagina. la idea es que en esa fucion coloques algo como usercontrol2.accio(); Donde accion es una funcion de tu control de usuario dos, el que quieres que haga algo depues del evento que genero el primero. Espero me hayas entendido, es un poquito enredado como no es complicado. Suerte.