How to get a postback source

if (Page.IsPostBack) {// here I need to know which control causes the postback}

thank

+3
source share
2 answers

Here is the code from the "Marked as Answer" link (just pasting the code here so we can save reading time):

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.AllKeys)
        {            

            c = Page.FindControl(ctl);               
            if (c is System.Web.UI.WebControls.Button ||

                     c is System.Web.UI.WebControls.ImageButton )
            {
                control = c;
                break;
            }
        }
    }

    if (control == null)
        return "";
    else
        return control.ID; 

}
+2
source

Source: https://habr.com/ru/post/1732168/


All Articles