سوالف سوفت

سوالف سوفت (http://www.swalif.net/softs/)
-   ASP و ASP.NET (http://www.swalif.net/softs/swalif46)
-   -   درس عن Cross-page posting (http://www.swalif.net/softs/swalif46/softs207484/)

برمودا 15-09-2007 09:29 PM

درس عن Cross-page posting
 
السلام عليكم

في الدرس السابق قمت بشرح مفهوم ViewState وهي تحتفظ فقط ببيانات الصفحة الحالية

ولكن اذا أردت أن أستخدم قيم الصفحة الحالية في الصفحة التي تليها ...كيف سيتم ذلك

هذا هو درسنا اليوم وهناك عدة طرق لذلك

الطريقة الأولى تسمى Cross-Page Posting
وهي طريقة جديدة وضعت في ال ASP.Net 0.2 وهي تستخدم مع الكونترولز التي تحتوي على الواجهة IButton مثل ( Button, LinkButton , ImageButton )

ونقوم بعمل المثال التالي لتوضيح الفكرة
1- يتم انشاء صفحتين
الصفحة الأولى تتكون من 2 Label و 2 textbox وbutton وتكون اسم الصفحة Page1.aspx
والصفحة الثانية تتكون من Label وتكون اسم الصفحة Page2.aspx كما في الصور الآتية




ونعطي الخاصية PostBackUrl للزر Enter الموجود في الصفحة الأولى اسم الصفحة الثانية وهنا ستكون القيمة page2.aspx كما في الصورة التالية :



ويتم كتابة كود في Page2 باانقر على الصفحة في أي مكان فارغ نقرتين بالماوس فيتم ظهور صفحة الكود فيتم كتابة الكود التالي في حدث ال Page-load



C#
كود:


If (PreviousPage != null)
{
Label.Text = “You came from a page titled “ + PreviousPage.Header.Title;
}


ولأنني أحب الفيجوال بيسك دوت نت لن أضع اختاصره بل سأكتب كامل حروفه

Visual Basic.net
كود:


If  PreviousPage IsNot  Nothing  then
Label.Text =  “You came from a page titled “ & PreviousPage.Header.Title
End If

والكود السابق يعني أن في حال لم تكن الصفحة السابقة فارغة اطبع لي عنوانها
واذا أردنا أن نستخدم ما كتب في التكست الأول والثاني من الصفحة الأولى الى الصفحة الثانية يتم كتابة الكود التالي
في الصفحة Page1.aspx
بلغة السي شارب C#
عمل property وهي عبارة عن دالة تستخدم لإحضار واعطاء قيم للمتغيرات الprivate
وهنا سنستخدمها لأحضار قيم التكست الأول والثاني من الصفحة الأولى Page1


C#
كود:


Public    string  GetFullName
{
Get  {  return  FirstNameTextbox.Text  +  “  “ +  LastNameTextbox.Text  ;    }
}
وكتابة الكود التالي في الصفحة الثانية  في دالة الPage-load
If  ( PreviousPage != null )
{

Page1  prePage = PreviousPage  as  Page1  ;
If  ( prePage  !=  null )
{
Label.Text  =  “ You Typed in this “ +  prePage.GetFullName  ;
}
}


Visual Basic.net
كود:


يتم كتابة الكود الأتي في صفحة Page1
Pubic  Function  GetFullName ()  AS  String
Return  FirstNameTextbox.Text  &  “  “  &  LastNameTextbox.Text
End  Function
ويتم كتابة الكود التالي في صفحة Page2 في دالة Page-load
If  PreviousPage  IsNot  Nothing  Then
Page1  prePage = PreviousPage  as  Page1 
If    prePage  IsNot  Nothing
Label.Text  =  “ You Typed in this “  &  prePage.GetFullName 
End If
End If

وهنا قمت بانشاء كائن object من الصفحة Page1 فهي عبارة عن كلاس ولكي أستطيع أن أستخدم الدالة التي فيها يجب أن أنشأ كائن منها


وستكون النتيجة كما في الصورة التالية






لاحظ أن الكلاس الخاص بالصفحة المطلوبة سيبقى في الذاكرة ولذلك لا يفضل الاكثار من الطريقة هادي

مع العلم أيضا يمكن اعادة قيادة الطريقة سيرفر . ترافسفر بوضع القيمة True بعد الفاصلة التي نلي العنوان كالتالي

كود:

Server.Transfer("index.htm",True)
]
تم الدرس

شكرا لكم

الثلج 19-09-2007 08:39 PM

اقتباس:

If PreviousPage IsNot Nothing Then
Page1 prePage = PreviousPage as Page1
If prePage IsNot Nothing
Label.Text = “ You Typed in this “ & prePage.GetFullName
End If
End If
جزاك ةالله خير لكن هالكود ماضبط معي

برمودا 21-09-2007 06:24 PM

يتوجب عليك أن تضيف هذا السطر في الصفحة

<%@ PreviousPageType VirtualPath="~/AdminCP/A-m3rd.aspx" %>
وتستبدل اسم الصفحة بالصفحة السابقة


الساعة الآن: 12:00 AM بتوقيت المملكة العربية السعودية

Powered by vBulletin® Version 3.6.8, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0