What is the difference between Page_Init and Page_Load?

N

Nathan Sokalski

What is the difference between the Page_Init and Page_Load events? When I
was debugging my code, they both seemed to get triggered on every postback.
I am assuming that there is some difference, and I would like to know what
it is so that I can take advantage of it in my code. Thanks.
 
J

Juan T. Llibre

Page_Init

The Page_Init event is the first to occur
when an ASP.NET page is executed.

This is where you perform any initialization steps that
you need to set up or create instances of server controls.

You can't access controls in this event because
there is no guarantee that they have been created yet.

Controls are created during this event, and you can control
whether your attempt to use these objects will be denied by
the server processing your request.

The Page_Init event fires only the first time the page is loaded.
When you postback to any page, the Page_Init event doesn't fire.

The Page_Load event fires each time the page loads, postback or not.

Page_Load

This event occurs only when all the objects on the
page have been created and are available for use.
 
N

Nathan Sokalski

That's what I thought, but in all the debugging I have done the Init event
gets fired regardless. The specific test I did was creating two labels, one
of which I modify in the Init, and one that I modify in the Load. I clear
them between postbacks using a Button.Click event handler and set
EnableViewState="false" for the Labels. I also used Visual Studio's Debug
feature, and it showed the code inside Init being executed on each postback.
Maybe I'm doing something wrong in my test, could you either tell me what
I'm forgetting or send me an example? What you said is what I thought the
difference was, but for some reason it isn't working that way for me.
Thanks.
 
J

JIMCO Software

Nathan said:
That's what I thought, but in all the debugging I have done the Init
event gets fired regardless. The specific test I did was creating two
labels, one of which I modify in the Init, and one that I modify in
the Load. I clear them between postbacks using a Button.Click event
handler and set EnableViewState="false" for the Labels. I also used
Visual Studio's Debug feature, and it showed the code inside Init
being executed on each postback. Maybe I'm doing something wrong in
my test, could you either tell me what I'm forgetting or send me an
example? What you said is what I thought the difference was, but for
some reason it isn't working that way for me. Thanks.


The Page_Init event fires only the first time the page is loaded.
When you postback to any page, the Page_Init event doesn't fire.

The Page_Load event fires each time the page loads, postback or not.


Page_Init always fires, postback or no.

--
Jim Cheshire
JIMCO Software
http://www.jimcosoftware.com

FrontPage add-ins for FrontPage 2000 - 2003
 
M

Mark Rae

The Page_Init event fires only the first time the page is loaded.
When you postback to any page, the Page_Init event doesn't fire.

Er... are you sure about this...?
 
J

Juan T. Llibre

re:
Maybe I'm doing something wrong in my test, could you either tell me what I'm forgetting
or send me an example?

I can't possibly know what you're forgetting
because I don't know what you're doing.

How about posting your code so we can, maybe, help you ?

Reduce the sample to the bare minimum needed, please.
 
N

Nathan Sokalski

Here is my code:


<%@ Page Language="vb" AutoEventWireup="false" Codebehind="InitLoad.aspx.vb"
Inherits="WebApplication1.InitLoad"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>InitLoad</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:Label id="lblInitStatus" runat="server"
EnableViewState="False">Fired&nbsp;Init&nbsp;Event:&nbsp;</asp:Label><BR>
<asp:Label id="lblLoadStatus" runat="server"
EnableViewState="False">Fired&nbsp;Load&nbsp;Event:&nbsp;</asp:Label><BR>
<BR>
<asp:Button id="btnResetStatus" runat="server" Text="Reset Init &amp;
Load Status" Font-Bold="True"
Width="168px" EnableViewState="False"></asp:Button><BR>
<BR>
<asp:Button id="btnDoAPostback" runat="server" Text="Do A Postback"
Font-Bold="True" Width="104px"
EnableViewState="False"></asp:Button>
</form>
</body>
</HTML>


Public Class InitLoad

Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Protected WithEvents lblInitStatus As System.Web.UI.WebControls.Label

Protected WithEvents lblLoadStatus As System.Web.UI.WebControls.Label

Protected WithEvents btnResetStatus As System.Web.UI.WebControls.Button

Protected WithEvents btnDoAPostback As System.Web.UI.WebControls.Button

'NOTE: The following placeholder declaration is required by the Web Form
Designer.

'Do not delete or move it.

Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent()

lblInitStatus.Text &= "FIRED"

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

lblLoadStatus.Text &= "FIRED"

End Sub

Private Sub btnResetStatus_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnResetStatus.Click

lblInitStatus.Text = "Fired&nbsp;Init&nbsp;Event:&nbsp;"

lblLoadStatus.Text = "Fired&nbsp;Load&nbsp;Event:&nbsp;"

End Sub

Private Sub btnDoAPostback_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnDoAPostback.Click

If btnDoAPostback.BackColor.Equals(Color.Silver) Then

btnDoAPostback.BackColor = Color.Black

btnDoAPostback.BorderColor = Color.Black

btnDoAPostback.ForeColor = Color.Silver

Else

btnDoAPostback.BackColor = Color.Silver

btnDoAPostback.BorderColor = Color.Silver

btnDoAPostback.ForeColor = Color.Black

End If

End Sub

End Class



This code has two Labels and two Buttons. The two Labels let you know
whether the Init and Load events were fired. The first button resets the
Labels, and the second Button is used to perform a postback (I simply have
the button invert its BackColor and ForeColors). However, the Init event is
fired every time.
 
J

John Timney \(ASP.NET MVP\)

you geek Spencer..........lol

Mines in the drawer at least!!!!

--
Regards

John Timney
ASP.NET MVP
Microsoft Regional Director
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,817
Latest member
DicWeils

Latest Threads

Top