In this example i am showing how to use Cross Page Posting or Postback In ASP.NET 2.0, 3.5, 4.0 Using C# And VB.NET. Cross Page posting is used to submit a form on one page (say default.aspx) and retrieve values of controls of this page on another page (say Default2.aspx)
There are two ways we can use cross page postsbacks in ASP.NET
1st method
In this i've created a Default.aspx page with two textbox and one button , button click will post back to Default2.aspx and there we will retrieve and show values of both textboxes
Html source of Default.aspx page is like
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
First Name:
<asp:TextBox ID="txtFirstName" runat="server">
</asp:TextBox><br /><br />
Last Name:
<asp:TextBox ID="txtLastName" runat="server">
</asp:TextBox><br /><br /><br />
<asp:Button ID="btnSubmit" runat="server"
OnClick="btnSubmit_Click"
PostBackUrl="~/Default2.aspx"
Text="Submit to Second Page" /><br />
</div>
</form>
</body>
</html>
PostBackUrl="~/Default2.aspx"
Now to retrieve values of textBoxes on Default2.aspx page, write below mentioned code in Page_Load event of second page (Default2.aspx)
C# code behind
protected void Page_Load(object sender, EventArgs e)
{
//Check whether previous page is cross page post back or not
if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
{
TextBox txtPbFirstName = (TextBox)PreviousPage.FindControl("txtFirstName");
TextBox txtPbLastName = (TextBox)PreviousPage.FindControl("txtLastName");
Label1.Text = "Welcome " + txtPbFirstName.Text + " " + txtPbLastName.Text;
}
else
{
Response.Redirect("Default.aspx");
}
}
VB.NET Code behind
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
'Check whether previous page is cross page post back or not
If PreviousPage IsNot Nothing AndAlso PreviousPage.IsCrossPagePostBack Then
Dim txtPbFirstName As TextBox = DirectCast(PreviousPage.FindControl("txtFirstName"), TextBox)
Dim txtPbLastName As TextBox = DirectCast(PreviousPage.FindControl("txtLastName"), TextBox)
Label1.Text = ("Welcome " & txtPbFirstName.Text & " ") + txtPbLastName.Text
Else
Response.Redirect("Default.aspx")
End If
End Sub
If you are using masterpages then you need to write code to FindControl as mentioned below
ContentPlaceHolder exampleHolder =(ContentPlaceHolder)Page.PreviousPage.Form.FindControl ("Content1"));
TextBox txtExample = exampleHolder.FindControl("txtFirstName");
2nd Method
Using Property to expose and Consume values of TextBox
If we are using this method then we don't need to use FindControl method at all
For this we need to create property in code behind of the page to be cross page post back (Default.aspx)
Html of the page needs no changes ,
C# code behind for Default.aspx
public TextBox pbTxtFirstName
{
get
{
return txtFirstName;
}
}
public TextBox pbTxtLastName
{
get
{
return txtLastName;
}
}
VB.NET
Public ReadOnly Property pbTxtFirstName() As TextBox
Get
Return txtFirstName
End Get
End Property
Public ReadOnly Property pbTxtLastName() As TextBox
Get
Return txtLastName
End Get
End Property
Now to retrieve or consume exposed properties on Second page we need to add below mentioned page directive in html source of Default2.aspx page(usually at the top of page)
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
C# code
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
{
Label1.Text = "Welcome " + PreviousPage.pbTxtFirstName.Text + " " + PreviousPage.pbTxtLastName.Text;
}
else
{
Response.Redirect("Default.aspx");
}
}
VB Code
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If PreviousPage IsNot Nothing AndAlso PreviousPage.IsCrossPagePostBack Then
Label1.Text = ("Welcome " & PreviousPage.pbTxtFirstName.Text & " ") + PreviousPage.pbTxtLastName.Text
Else
Response.Redirect("Default.aspx")
End If
End Sub
Hope this helps
Cross Page Posting PostBack In ASP.NET
Posted by
Unknown
Don't forget to set PostBackUrl Property of Button
If you like this post than join us or share
Subscribe to:
Post Comments (Atom)
29 comments:
I love c# because is too simple. hahahaha
dear sir,
Getting error to following code.
error is OBJECT REFERENCE IS NOT SET TO ANINSTANCE OF AN OBJECT
if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
{
ContentPlaceHolder exampleHolder = ((ContentPlaceHolder)Page.PreviousPage.Form.FindControl("Content123"));
TextBox txtExample = (TextBox)exampleHolder.FindControl("txtFirstName");
TextBox txtExample1 = (TextBox)exampleHolder.FindControl("txtLastName");
Label1.Text = "Welcome " + txtExample.Text + " " + txtExample1.Text + "";
}
}
}
KINDLY HELP ME AS SOON AS POSSIBLE
by calling data via IsCrossPagePostBack from one page how to bind data on gridview which is located to another page
Wow of all the articles about crosspage posting and master pages, this is the best. Very well written. The first approach did not work, but the second one worked very well
Getting error to following code.
error is OBJECT REFERENCE IS NOT SET TO ANINSTANCE OF AN OBJECT
Hello.
The interesting name of a site - csharpdotnetfreak.blogspot.com, interesting this here is very good.
I spent 5 hours searching in the network, until find your forum!
Hi - I am certainly glad to find this. cool job!
Hi - I am really glad to find this. Good job!
This comment has been removed by a blog administrator.
This comment has been removed by a blog administrator.
You made a few fine points there. I did a search on the subject matter and found mainly folks will consent with your blog.
Hello. And Bye.
Hi everybody! I am from Denmark and would like to say hello!
Everything is ok. But tell me what I need to do when I want to set e.g. Session Value on OnClick event? PostBackUrl fires first and omit OnClick event... How to resolve this and still having possibility to use PreviousPage?
hi,
how to update data from one page to another without invoking that page. for example I click a button and the action to be reflected in another page without invoking it. it should be visible to any user who is currently using the other page.
good one for cross page post back
I consider, that you are not right. I am assured. I can prove it. Write to me in PM.
This comment has been removed by a blog administrator.
This comment has been removed by a blog administrator.
This comment has been removed by a blog administrator.
Good day!
Happy New Year!
Health, luck and love!
This comment has been removed by a blog administrator.
hi sir i ma getting NullReferenceExeption at below line
V= Label1.Text = "Welcome " + txtPbFirstName.Text + " " + txtPbLastName.Text;
Plz help me
@Above: Use PreviousPage.pbTxtFirstName.Text
Your site is really good and the posts are just wonderful. Thank you and keep doing your great work.
You could have done this
public string pbTxtFirstName
{ get {return txtName.Text;}}
Instead of getting whole TextBox
Thanks for sharing this information.
help me on use of repeater controle
Beginner C#, jQuery, SQL Server, ASP.NET MVC, LINQ and much more..
Beginner Programming Tutorials
Post a Comment