usar tipos net ispostback como asp asp.net postback

asp.net - tipos - ¿Qué control causó la devolución de datos?



postback en java (4)

Esto ayuda a encontrar el nombre de control que causó la devolución de datos en la carga de la página. Esto me ayudó. Espero que esto ayude a alguien más también.

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick = "SetSource(this.id)" /> <asp:ImageButton ID="ImageButton1" runat="server" OnClientClick = "SetSource(this.id)" /> <script type = "text/javascript"> function SetSource(SourceID) { var hidSourceID = document.getElementById("<%=hidSourceID.ClientID%>"); hidSourceID.value = SourceID; } </script> on code behind you can get the ID of the function using : if (IsPostBack) { string CtrlID = string.Empty; if (Request.Form[hidSourceID.UniqueID] != null && Request.Form[hidSourceID.UniqueID] != string.Empty) { CtrlID = Request.Form[hidSourceID.UniqueID]; } }

Tengo dos botones:

<asp:Button ID="Button1" runat="server" Text="Button" /> <asp:Button ID="Button2" runat="server" Text="Button" />

¿Cómo puedo determinar en pageLoad cuál de los dos causó la devolución de datos? ¿Existe una solución corta ya que sé que solo hay dos controles que pueden causar esta devolución de datos?


Puede usar este método para obtener el control que causó la devolución de datos:

/// <summary> /// Retrieves the control that caused the postback. /// </summary> /// <param name="page"></param> /// <returns></returns> private Control GetControlThatCausedPostBack(Page page) { //initialize a control and set it to null Control ctrl = null; //get the event target name and find the control string ctrlName = page.Request.Params.Get("__EVENTTARGET"); if (!String.IsNullOrEmpty(ctrlName)) ctrl = page.FindControl(ctrlName); //return the control to the calling method return ctrl; }


http://geekswithblogs.net/mahesh/archive/2006/06/27/83264.aspx

private string getPostBackControlName() { 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; }


protected void ReUsedMethod_Click(object sender, EventArgs e) { string ctrlName = ((Button)sender).ID; }