PDA

View Full Version : ارسال پارارمتر به یک صفحه



مهدی رحیم زاده
چهارشنبه 28 مرداد 1388, 00:37 صبح
سلام خدمت دوستان و اساتید محترم
یک سئوال ساده از خدمتون داشتم ، چطور میتونم به یک صفحه یک مقدار رو بفرستم و بعد از اون مقدار استفاده کنم .
منظورم اینه که مثلا یک کد رو برای یک صفحه بفرستم و بعد برای ویرایش اطلاعات از همون کدی که فرستادم به این صفحه استفاده کنم .
با تشکر

مهدی رحیم زاده
چهارشنبه 28 مرداد 1388, 14:01 عصر
یک کسی وقت برای یک توضیح کوچولو نداره ؟

ahmad1358
چهارشنبه 28 مرداد 1388, 14:28 عصر
اگه بشه این کارو با ای جکس انجام بدیم عالی میشه منم دنبال جوابشم

ahmad1358
چهارشنبه 28 مرداد 1388, 14:31 عصر
<%@ 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>


Don't forget to set PostBackUrl Property of Button
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.FindCo ntrol ("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" %>Now write this code in page_Load event of second page to retrieve values of controls
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

ali.akhbary
چهارشنبه 28 مرداد 1388, 14:38 عصر
ای ول. خیلی عالی بود.
:قلب: :قلب: :قلب: :قلب:

iman_ad
چهارشنبه 28 مرداد 1388, 15:38 عصر
اینقدر تاپیک تکراری باز نکنید این مطلب بارها عنوان شده چرا قبل باز کردن تاپیک جستجو نیمیکنید!!!!

مهدی رحیم زاده
چهارشنبه 28 مرداد 1388, 19:29 عصر
اینقدر تاپیک تکراری باز نکنید این مطلب بارها عنوان شده چرا قبل باز کردن تاپیک جستجو نیمیکنید!!!!
دوست عزیز ممنون بابت تذکرتون اما من جست و جو کردم و به نتیجه نرسیدم . اگر شما مطلب مفیدی پیدا کردین ، لینکشو برام بزارید ممنون میشم .
با تشکر

iman_ad
چهارشنبه 28 مرداد 1388, 19:45 عصر
کافی یک کتاب advance یا developer برای asp.net قسمتهای application, session, catch, viewstate, cross page بخونی دستت می یاد کجا کدوم کاربرد داره

مهدی رحیم زاده
چهارشنبه 28 مرداد 1388, 20:08 عصر
دوست عزیز ممنون اما لینک ها رو نزاشتینا!
اگه دقت کرده باشین وقتی همچین تذکری رو میدین بهترش اینه که همونجا لینک جست و جوی خودتون رو هم بازرید .
این سایت رو گذاشتن ت مجبور نباشی به خاطر هر سئوال کوچولویی 1.5ماه وقت صرف کنی دوست من !
من از اینجا به نتیجه رسیدم :
http://www.tebyan.net/Weblog/lok_ik/post.aspx?PostID=76812
موفق و پیروز باشید.