PostBack is the name given to the process of
submitting an ASP.NET page to the server for processing. PostBack is done if
certain credentials of the page are to be checked against some sources (such as
verification of username and password using database). This is something that a
client machine is not able to accomplish and thus these details have to be
'posted back' to the server.
What is AutoPostBack Property in ASP.NET:
If we create a web Page, which consists of one or more Web Controls that are
configured to use AutoPostBack (Every Web controls will have their own
AutoPostBack property), the ASP.Net adds a special JavaScipt function to the
rendered HTML Page. This function is named _doPostBack() . When Called, it
triggers a PostBack, sending data back to the web Server.
ASP.NET also adds two additional hidden input fields that are used to pass
information back to the server. This information consists of ID of the Control
that raised the event and any additional information if needed. These fields
will empty initially as shown below,
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET"
value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
The _doPostBack() function has
the responsibility for setting these values with the appropriate information
about the event and the submitting the form. The _doPostBac
() function is shown below:
<script language="text/javascript">
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit()
!= false)) {
theForm.__EVENTTARGET.value =
eventTarget;
theForm.__EVENTARGUMENT.value =
eventArgument;
theForm.submit();
}
</script>
ASP.NET generates the _doPostBack() function automatically, provided at least
one control on the page uses automatic postbacks.
Any Control that has its AutoPostBack Property set to true is connected to the _doPostBack()
function using the onclick or onchange attributes. These attributes indicate
what action should Browser take in response to the Client-Side javascript events
onclick and onchange.
In other words, ASP.Net automatically changes a client-side javascript event
into a server-side ASP.Net event, using the _doPostBack() function as an
intermediary.
Life Cycle of a Web Page:
To work with the ASP.Net Web Controls events, we need a solid understanding of
the web page life cycle. The following actions will be taken place when a user
changes a control that has the AutoPostBack property set to true :
- On the client side, the JavaScript _doPostBack
function is invoked, and the page is resubmitted to the server.
- ASP.NET re-creates the Page object using
the .aspx file.
- ASP.NET retrieves state information from
the hidden view state field and updates the controls accordingly.
- The Page.Load event is fired.
- The appropriate change event is fired for
the control. (If more than one control has been changed, the order of change
events is undetermined.)
- The Page.PreRender event fires, and the
page is rendered (transformed from a set of objects to an HTML page).
- Finally, the Page.Unload event is fired.
- The new page is sent to the client.
To watch these events in action, we can create
a simple event tracker application. All this application does is write a new
entry to a list control every time one of the events it's monitoring occurs.
This allows you to see the order in which events are triggered.
Event Tracker Web Page
I have shown Markup codes and C# Codes below to make this works,
EventTracker.aspx :
<%@
Page Language="C#"
AutoEventWireup="true"
CodeFile="EventTracker.aspx.cs"
Inherits="EventTracker"
%>
<!DOCTYPE
html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head
runat="server">
<title>Untitled
Page</title>
</head>
<body>
<form
id="form1"
runat="server">
<div>
<h1>Controls
being monitored for change events:</h1>
<asp:TextBox
ID="txt"
runat="server"
AutoPostBack="true"
OnTextChanged="CtrlChanged"
/>
<br
/><br
/>
<asp:CheckBox
ID="chk"
runat="server"
AutoPostBack="true"
OnCheckedChanged="CtrlChanged"/>
<br
/><br
/>
<asp:RadioButton
ID="opt1"
runat="server"
GroupName="Sample"
AutoPostBack="true"
OnCheckedChanged="CtrlChanged"/>
<asp:RadioButton
ID="opt2"
runat="server"
GroupName="Sample"
AutoPostBack="true"
OnCheckedChanged="CtrlChanged"/>
<h1>List
of events:</h1>
<asp:ListBox
ID="lstEvents"
runat="server"
Width="355px"
Height="150px"
/><br
/>
<br
/><br
/><br
/>
</div>
</form>
</body>
</html>
EventTrakcer.aspx.cs :
using
System;
using
System.Collections;
using
System.Configuration;
using
System.Data;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.HtmlControls;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
public
partial class
EventTracker : System.Web.UI.Page
{
protected void
Page_Load(object sender,
EventArgs e)
{
Log("<< Page_Load >>");
}
protected void
Page_PreRender(object sender,
EventArgs e)
{
// When the Page.PreRender event occurs, it is
too late
// to change the list.
Log("Page_PreRender");
}
protected void
CtrlChanged(Object sender,
EventArgs e)
{
// Find the control ID of the sender.
// This requires converting the Object
type into a Control class.
string ctrlName = ((Control)sender).ID;
Log(ctrlName + " Changed");
}
private void
Log(string entry)
{
lstEvents.Items.Add(entry);
// Select the last item to scroll the list so
the most recent
// entries are visible.
lstEvents.SelectedIndex = lstEvents.Items.Count - 1;
}
}
What the above Codes does:
The code writes to the ListBox using a private Log() method. The Log() method
adds the text and automatically scrolls to the bottom of the list each time a
new entry is added, thereby ensuring that the most recent entries remain
visible.
All the change events are handled by the same method, CtrlChanged().If you look
carefully at the .aspx file, you'll notice see that each input control connects
its monitored event to the CtrlChanged() method. The event handling code in the
CtrlChanged() method uses the source parameter to find out what control sent the
event, and it incorporates that information in the log string.
The page includes event handlers for the Page.Load and Page.PreRender events. As
with all page events, these event handlers are connected by method name. That
means to add the event handler for the Page.PreRender event, you simply need to
add a method named Page_PreRender(), like the one shown here.
Thank You....