martes, 12 de mayo de 2009

Saber que control ha provocado el Postback

En algunas ocasiones nos gustaria saber control ha provocado la recarga (postback) de la página para esto podemos hacerlo de dos formas dependiendo de si es una recarga parcial (ajax) o un postaback total de la pagina. 1.-Si es una recarga parcial de la pagina //obtenemos la página actual Page page = (HttpContext.Current.Handler as Page); //mediante el Scriptmanager accedemos al control que ha hecho la recarga parcial de la misma string ctrlname = ScriptManager.GetCurrent(page).AsyncPostBackSourceElementID; Control control = page.FindControl(ctrlname); 2.-Si es una recarga total ctrlname = page.Request.Params["__EVENTTARGET"]; Esto funciona conrrectamente con casi todos los controles pero No con Botones, esto es debido a que los botons cuando se pintan en html no llaman a la función __doPostBack de Javascript y por tanto __EVENTTARGET nunca va a tener valor, para conseguir esto os dejo un enlace en el que muestran como conseguirlo para todo tipo de controles. Es un articulo muy útil de Ryan Farely.

Determining the Control that Caused a PostBack

No hay comentarios: