Need to know which specific control posted back to your page? (Original article at http://geekswithblogs.net/mahesh/archive/2006/06/27/83264.aspx)
/// <summary> /// Tells us which control posted back /// </summary> /// <returns></returns> public Control 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; }
If you are using master pages, simply add this to the master.cs file and where you need to call the method use the following code:
MasterPage masterPage = (MasterPage)Page.Master; // where MasterPage is the class name Control rep = masterPage.getPostBackControlName(); if (rep.Parent.Parent.ID == "rpRegion")// only if postback is the regions control GetSelectedRegion();