Click here to Skip to main content
11,491,742 members (71,038 online)
Click here to Skip to main content

Way To Know Which Control Has Raised PostBack

, 13 Dec 2010 CPOL 76.5K 416 56
Rate this:
Please Sign up or sign in to vote.
This is the short code snippet with understanding to make you know about what is PostBack in ASP.NET and further how you can know about the Control that raised the PostBack by using inbuilt ASP.NET functionality and manually.

Introduction

The main aim of this article is to make you know among the several controls that resides in ASP.NET page, at the time of PostBack how to know which control has actually raised this event.

Background

Technical definition about PostBack: Most ASP.NET Controls are "Server Controls". This means that when an action occurs, the Page, which hosts all its controls inside <FORM... tags, makes a regular old HTTP POST, with itself being the target URL. This is referred to as a "POSTBACK". *

In simple words, we can differentiate PostBack and Redirection in this way.

Postback: It is the scenario in which ASP.NET page redirects to page itself.

Redirect: It is the scenario in which ASP.NET page is called from another page.

You can check whether the page is PostedBack or not with code side using IsPostBack Property which returns Bool.

Using the Code

The agenda of this article is to determine which control inside page has made page to be posted back to itself OR in other words which control has raised PostBack.

For the control which supports AutoPostBack property, ASP.NET Page has a inbuilt function which will determine the event raising control.

There are several controls that support AutoPostBack, among them some are:

  • Dropdown
  • CheckBoxList
  • RadioButtonList
  • TextBox, etc.

These controls calls _doPostback function in JavaScript generated by ASP.NET automatically.

Let's have a look at the _doPostback function.

function __doPostBack(eventTarget, eventArgument) {
            if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
                theForm.__EVENTTARGET.value = eventTarget;
                theForm.__EVENTARGUMENT.value = eventArgument;
                theForm.submit();
            }
        }

Note:

  • This function will not be visible until minimum of one control is raising the AutoPostBack inside page.
  • The _doPostBack event simply stores value in two hidden fields.
    1. eventTarget - Name of the control raised the postback
    2. eventArgument - The argument to be sent to server

Let's have a look at how those two hidden fields are on page.

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

Now if you want to get the ID of a raising control from the code side, you can write this simple snippet and find the values stored in hidden field:

if (IsPostBack)
{
    string ControlID = string.Empty;
    if (!String.IsNullOrEmpty(Request.Form["__EVENTTARGET"]))
    {
        ControlID = Request.Form["__EVENTTARGET"];
    }
}

OR alternatively, you can find full control object using:

if (IsPostBack)
{
    string ControlID = string.Empty;
    if (!String.IsNullOrEmpty(Request.Form["__EVENTTARGET"]))
    {
        ControlID = Page.Request.Params["__EVENTTARGET"];
        Control postbackControl = Page.FindControl(ControlID);
    }
}

_doPostBack function only will be called by AutoPostBack property supportive Controls now let's have a look of the other Control which don't support that inbuilt.

Controls that can be listed are:

  • Button
  • ImageButton, etc.

To make a functionality for Non Supportive AutopostBack Property Control, make one Hidden field on the page.

<asp:HiddenField ID="CustomHiddenField" runat="server" />

Call a custom Js function on the clientclick so that it will be stored in hidden field before page actually redirects to server.

<asp:Button ID="btn" runat="server" Text="Click me"
  OnClientClick = "SetSource(this.id)" />

function SetSource(SourceID)
    {
        var hidSourceID =
        document.getElementById("<%=CustomHiddenField.ClientID%>");
        hidSourceID.value = SourceID;
    }

Note: Always use "<%=CustomHiddenField.ClientID%>" convention because Hiddenfield ID can be renamed by ASP.NET.

And get a name once page is posted back by server using Codebehind.

if (IsPostBack)
{
    string CtrlID = string.Empty;
    if (!String.IsNullOrEmpty(Request.Form[CustomHiddenField.UniqueID]))
    {
        CtrlID = Request.Form[CustomHiddenField.UniqueID];
    }
}

Now below is a full code snippet for getting raising control among both type of controls.

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        string ControlID = string.Empty;
        if (!String.IsNullOrEmpty(Request.Form["__EVENTTARGET"]))
        {
            ControlID = Request.Form["__EVENTTARGET"];
        }
        else
        {
            //Buttons and ImageButtons
            if (!String.IsNullOrEmpty(Request.Form[CustomHiddenField.UniqueID]))
            {
                ControlID = Request.Form[CustomHiddenField.UniqueID];
            }
        }
    }
} 

History

  • 14th December, 2010 - Truncated code with IsNullOrEmpty
  • 9th December, 2010 - Attached code and some typos corrected WTHO ThatRaja
  • 8th December, 2010 - Article published

Reference

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Hiren solanki
Software Developer
India India
He is a Smart IT devloper with Few years of Expeariance But having Great command on ASP.net,C#,SQL Query,SSRS,Crystal Reports

Apart from that He Loves multimedia work too, Master of Adobe photoshop, Illustrator, CSS , HTML and all things.

He is Currently working in Microsoft Dynamics CRM and Having Nice Expearince with CRM. CRM Rocks!!!

Comments and Discussions

 
GeneralMy vote of 5 Pin
csharpbd5-Aug-13 8:23
membercsharpbd5-Aug-13 8:23 
GeneralRe: My vote of 5 Pin
Hiren solanki5-Aug-13 23:06
memberHiren solanki5-Aug-13 23:06 
GeneralRe: My vote of 5 Pin
csharpbd6-Aug-13 7:50
membercsharpbd6-Aug-13 7:50 
GeneralMy vote of 4 Pin
M Rayhan14-Jul-13 20:16
memberM Rayhan14-Jul-13 20:16 
GeneralMy vote of 5 Pin
Prasad Khandekar27-May-13 20:53
professionalPrasad Khandekar27-May-13 20:53 
GeneralRe: My vote of 5 Pin
Hiren solanki28-Jul-13 22:01
memberHiren solanki28-Jul-13 22:01 
Questionhow the server knows the submit button id caused postback Pin
karthime11-Apr-12 7:13
memberkarthime11-Apr-12 7:13 
GeneralMy vote of 5 Pin
JF201511-Jan-11 23:43
memberJF201511-Jan-11 23:43 
GeneralRe: My vote of 5 Pin
Hiren Solanki11-Jan-11 23:48
memberHiren Solanki11-Jan-11 23:48 
GeneralMy vote of 5 Pin
Abhishek Sur9-Jan-11 0:58
mvpAbhishek Sur9-Jan-11 0:58 
GeneralRe: My vote of 5 Pin
Hiren Solanki9-Jan-11 20:03
memberHiren Solanki9-Jan-11 20:03 
GeneralMy vote of 5 Pin
E$w@r8-Jan-11 7:17
memberE$w@r8-Jan-11 7:17 
GeneralRe: My vote of 5 Pin
Hiren Solanki9-Jan-11 20:02
memberHiren Solanki9-Jan-11 20:02 
GeneralMy vote of 5 Pin
RaviRanjankr8-Jan-11 2:07
memberRaviRanjankr8-Jan-11 2:07 
GeneralRe: My vote of 5 Pin
Hiren Solanki9-Jan-11 20:02
memberHiren Solanki9-Jan-11 20:02 
GeneralMy vote of 5 Pin
Abhinav S7-Jan-11 20:14
mvpAbhinav S7-Jan-11 20:14 
GeneralRe: My vote of 5 Pin
Hiren Solanki7-Jan-11 22:13
memberHiren Solanki7-Jan-11 22:13 
GeneralMy vote of 5 Pin
NMehta837-Jan-11 19:55
memberNMehta837-Jan-11 19:55 
GeneralRe: My vote of 5 Pin
Hiren Solanki7-Jan-11 22:14
memberHiren Solanki7-Jan-11 22:14 
GeneralMy vote of 5 Pin
vikas amin4-Jan-11 11:00
membervikas amin4-Jan-11 11:00 
GeneralRe: My vote of 5 Pin
Hiren Solanki7-Jan-11 18:00
memberHiren Solanki7-Jan-11 18:00 
GeneralMy vote of 5 Pin
prasad024-Jan-11 6:02
memberprasad024-Jan-11 6:02 
GeneralRe: My vote of 5 Pin
Hiren Solanki7-Jan-11 17:59
memberHiren Solanki7-Jan-11 17:59 
GeneralMy vote of 5 Pin
Abhinav S24-Dec-10 22:04
memberAbhinav S24-Dec-10 22:04 
GeneralRe: My vote of 5 Pin
Hiren Solanki24-Dec-10 22:10
memberHiren Solanki24-Dec-10 22:10 
GeneralMy vote of 5 Pin
prasad0222-Dec-10 5:15
memberprasad0222-Dec-10 5:15 
GeneralRe: My vote of 5 Pin
Hiren Solanki22-Dec-10 19:41
memberHiren Solanki22-Dec-10 19:41 
GeneralNice One Pin
Brij20-Dec-10 21:07
mentorBrij20-Dec-10 21:07 
GeneralRe: Nice One Pin
Hiren Solanki20-Dec-10 21:10
memberHiren Solanki20-Dec-10 21:10 
GeneralGood Article Pin
ravish shah13-Dec-10 4:38
memberravish shah13-Dec-10 4:38 
GeneralRe: Good Article Pin
Hiren Solanki13-Dec-10 4:42
memberHiren Solanki13-Dec-10 4:42 
GeneralOne suggestion Pin
Steve Wellens13-Dec-10 4:37
memberSteve Wellens13-Dec-10 4:37 
GeneralRe: One suggestion [modified] Pin
Hiren Solanki13-Dec-10 4:41
memberHiren Solanki13-Dec-10 4:41 
GeneralMy vote of 5 Pin
Abhijit Jana13-Dec-10 3:15
mvpAbhijit Jana13-Dec-10 3:15 
GeneralRe: My vote of 5 Pin
Hiren Solanki13-Dec-10 3:20
memberHiren Solanki13-Dec-10 3:20 
GeneralMy vote of 5 Pin
Prosanta Kundu online12-Dec-10 18:14
memberProsanta Kundu online12-Dec-10 18:14 
GeneralRe: My vote of 5 Pin
Hiren Solanki12-Dec-10 19:56
memberHiren Solanki12-Dec-10 19:56 
GeneralMy vote of 5 Pin
Viral Upadhyay11-Dec-10 1:03
memberViral Upadhyay11-Dec-10 1:03 
GeneralRe: My vote of 5 Pin
Hiren Solanki12-Dec-10 19:55
memberHiren Solanki12-Dec-10 19:55 
GeneralMy vote of 5 Pin
dida9-Dec-10 22:48
memberdida9-Dec-10 22:48 
GeneralRe: My vote of 5 Pin
Hiren Solanki9-Dec-10 22:49
memberHiren Solanki9-Dec-10 22:49 
GeneralMy vote of 5 Pin
virang9-Dec-10 19:56
membervirang9-Dec-10 19:56 
GeneralRe: My vote of 5 Pin
Hiren Solanki9-Dec-10 19:57
memberHiren Solanki9-Dec-10 19:57 
GeneralMy vote of 5 Pin
SChristmas9-Dec-10 5:54
memberSChristmas9-Dec-10 5:54 
GeneralRe: My vote of 5 Pin
Hiren Solanki9-Dec-10 19:23
memberHiren Solanki9-Dec-10 19:23 
GeneralA couple of suggestions Pin
Pete Sutcliffe9-Dec-10 5:38
memberPete Sutcliffe9-Dec-10 5:38 
GeneralRe: A couple of suggestions. Pin
Hiren Solanki9-Dec-10 19:55
memberHiren Solanki9-Dec-10 19:55 
GeneralMy vote of 5 Pin
marciomacedo9-Dec-10 2:44
membermarciomacedo9-Dec-10 2:44 
GeneralRe: My vote of 5 Pin
Hiren Solanki9-Dec-10 2:50
memberHiren Solanki9-Dec-10 2:50 
GeneralMy vote of 5 Pin
madhukk9-Dec-10 1:15
membermadhukk9-Dec-10 1:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.150520.1 | Last Updated 14 Dec 2010
Article Copyright 2010 by Hiren solanki
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid