ASP.NET determina en qué botón se hizo clic dentro de un panel de actualización en el evento de carga de página
user-controls event-handling (1)
Puede obtener ID de control que causó la devolución de datos en el evento Page_Load con este método.
protected void Page_Load(object sender, EventArgs e)
{
Textbox1.Text = getPostBackControlID();
}
private string getPostBackControlID()
{
Control control = null;
//first we will check the "__EVENTTARGET" because if post back made by the controls
//which used "_doPostBack" function also available in Request.Form collection.
string ctrlname = Page.Request.Params["__EVENTTARGET"];
if (ctrlname != null && ctrlname != String.Empty)
{
control = Page.FindControl(ctrlname);
}
// if __EVENTTARGET is null, the control is a button type and we need to
// iterate over the form collection to find it
else
{
string ctrlStr = String.Empty;
Control c = null;
foreach (string ctl in Page.Request.Form)
{
//handle ImageButton they having an additional "quasi-property" in their Id which identifies
//mouse x and y coordinates
if (ctl.EndsWith(".x") || ctl.EndsWith(".y"))
{
ctrlStr = ctl.Substring(0, ctl.Length - 2);
c = Page.FindControl(ctrlStr);
}
else
{
c = Page.FindControl(ctl);
}
if (c is System.Web.UI.WebControls.Button ||
c is System.Web.UI.WebControls.ImageButton)
{
control = c;
break;
}
}
}
return control.ID;
}
}
Estoy tratando de entender el problema del ciclo de vida de una página de un UserControl de ASP.NET. Lo que tengo es un panel de actualización con dos botones. Ahora, en el evento Page_Load, necesito hacer una comprobación para ver en cuál de los dos botones se hizo clic.
Sé que debería usar el evento click para esto, pero este es un caso de ciclo de página bastante complejo con controles agregados dinámicamente, etc., así que no es una opción, lamentablemente :-(
Intenté comprobar el valor de Request.Form["__EVENTTARGET"]
, pero como los botones están dentro de un UpdatePanel, el valor es una cadena vacía (al menos supongo que es por eso que está vacía)
Entonces, básicamente, ¿hay alguna forma de verificar en qué botón se hizo clic en un Panel de actualización, en el evento Page_Load?
Gracias por adelantado.
Todo lo mejor,
Bo