العودة   منتدى رياض الجنة - Riad Al-Ganah > الرياض التقنية > روضة الكورسات والدورات التقنية والعلمية > روضة دورات تقنية الـ .NET بلغاتها المختلفة > دورة .NET 2008 من منتدى فيجوال بيسك للعرب

دورة .NET 2008 من منتدى فيجوال بيسك للعرب مقدم الدورة : أحمد جمال ، نوع الدورة : كتابية مصحوبة بصور ، حالة الدورة : انتهت ، عدد الدروس : 80 درس . مستوى الدورة : من البداية للاحتراف .

إضافة رد

 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 03-11-2010, 07:05 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس السادس والسبعون : ASP.net - الجزء الثالث - دورة .net 2008

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

State Management :

لعلك ومن خلال تجاربك في تطوير Stand alone Application تدرك انك وقت تعريفك لمتغير ما فسيظل هذا المتغير محتفظاً بقيمته حتى انهاء البرنامج أو الخروج خارج ال Scope الخاص بهذا المتغير ، إلا أن هذا الوضع مختلف تماماً في ASP.net حيث ستضيع قيم المتغيرات مع أول تعديل ، لذا كان من اللازم عليك أن تقوم بتخزين متغيراتك وقيم بحيث يمكنك استرجاعها ، وهو ما سنتعرف على بعض تقنياته في هذا الدرس .

يمكنك تخزين القيم بواحدة من ستة طرق اساسية :

- View state .
- Control state .
- Application-Level Variables
- Cache .
- Session .
- ******s .

وسنتعرف عليها خلال هذا الدرس إن شاء الله .

Control state :

هي الطريقة الأسهل للاحتفاظ بالبيانات ، كل ما عليك هو تغيير القيمة EnableViewState لأي أداة حتى ولو للصفحة ككل ، في هذه الحالة القيم الموجودة في أي من أدواتك لن تتأثر وستظل محتفظة بقيمتها حتى اغلاق الصفحة .

لو فتحت ال HTML الناتج عن المتصفح لصفحة تستخدم View State ستجد الجزء التالي حيث يحتفظ ال ViewState بقيمته .
كود PHP:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTIxNDIyOTM0Mg9kFgICAw9kFgICAQ8PFgIeBFRleHQFBWFobWVkZGRkCq8FGqyXBP0pBDpvdnycvM5zSQE=" /> 
خطأ شائع :
أحياناً ما تحتاج لإن تقوم بملء محتويات قائمة لديك في حدث ال Form_Load ، اغلب الناس تستخدم الاسلوب التالي :
C#:
كود PHP:
        ListBox1.Items.Add("Ahmed");
        
ListBox1.Items.Add("Mohammed");
        
ListBox1.Items.Add("Ali"); 
vb.net:
كود PHP:
ListBox1.Items.Add("Ahmed"
ListBox1.Items.Add("Mohammed"
ListBox1.Items.Add("Ali"
في الواقع هذه الطريقة متعبة جداً ، خصوصاً لو كان ملء القائمة يتم من خلال قاعدة البيانات !!!

الحل البديل ، هو الاعتماد على خاصية EnableViewState ، واستخدام الخاصية IsPostBack للتأكد من أننا نقوم بملأها في المرة الأولى فقط بالشكل التالي :

C#:
كود PHP:
if (!IsPostBack)
        {
            
ListBox1.Items.Add("Ahmed");
            
ListBox1.Items.Add("Mohammed");
            
ListBox1.Items.Add("Ali");
        } 
vb.net:
كود PHP:
If Not IsPostBack Then 
    ListBox1
.Items.Add("Ahmed"
    
ListBox1.Items.Add("Mohammed")  
    
ListBox1.Items.Add("Ali"
End If 
View state :

طريقة أخرى تعتمد على نفس المفهوم ولكن بعيداً عن الأدوات ، حيث يمكنك مثلاً كتابة الكود التالي لتخزين قيمة ما بنفس الطريقة :
C#:
كود PHP:
ViewState["CustomViewStateItem"] = "Ahmed"
vb.net:
كود PHP:
ViewState("CustomViewStateItem") = "Ahmed" 
ولاستعادته :
C#:
كود PHP:
Label1.Text = (string)ViewState["CustomViewStateItem"]; 
vb.net:
كود PHP:
Label1.Text DirectCast(ViewState("CustomViewStateItem"), String
Session :
طريقة سهلة التعامل جداً ، وبنفس طريقة View State السابقة مع اختلاف التكنيك فقط ، للكتابة :

C#:
كود PHP:
Session["mySession"] = "Ahmed"
vb.net:
كود PHP:
Session("mySession") = "Ahmed" 
والاستعادة :
C#:
كود PHP:
string name = (string) Session["mySession"]; 
vb.net:
كود PHP:
Dim name As String DirectCast(Session("mySession"), String
يمكنك عمل Remove لأي Session بالشكل التالي :
C#:
كود PHP:
Session.Remove["mySession"]; 
vb.net:
كود PHP:
Session.Remove("mySession"
كما أن هناك خاصية Timeout والتي تحدد فترة احتفاظ ال Session بقيمته بالدقائق ، وافتراضياً هي 20 دقيقة :
كود PHP:
Session.Timeout 
******s :

طريقة أخرى من وسائل الاحتفاظ بالقيم ولكن عند جهاز العميل ، حيث يتم الاحتفاظ بهذه القيم في ملفات نصية ( في اغلب الاحيان ) ولكن ينبغي مراعاة ان يكون متصفح العميل يسمح بمثل هذه العملية ، وهي الطريقة الأكثر شهرة في الاحتفاظ بمعلومات الدخول والتسجيل في المواقع المختلفة .
وهي مشتقة من الفئة System.Web.Http****** .

سنجرب الآن مثالاً على ال****ز ، حيث سنقوم بتسجيل اختيار المستخدم من الألوان - اللون الاخضر أو الأحمر مثلاً -، ومع كل تشغيل للموقع في حالة وجود ****ز يتم استخدام اللون المفضل ، وإلا يتم اللجوء للون الافتراضي وهو الأصفر مثلاً .

سنقوم برسم الصفحة اولاً باللون الافتراضي الأصفر :



الكود الخاص بها :
كود بلغة HTML:
<asp:Panel ID="Panel1" runat="server" Height="134px" Width="446px" BackColor="Yellow">
        قم باختيار اللون المطلوب :<br />
        <br />
        <asp:RadioButton ID="RadioButton1" runat="server" Text="أخضر" GroupName="colors" />
        <br />
        <asp:RadioButton ID="RadioButton2" runat="server" 
            oncheckedchanged="RadioButton2_CheckedChanged" Text="أحمر" GroupName="colors"/>
        <br />
        <br />
        <asp:Button ID="Button1" runat="server" Text="تطبيق" onclick="Button1_Click1" />
    </asp:Panel>
والآن ، سنقوم بانشاء ****ز نخزن فيه اللون المختار حالياً بالشكل التالي في حدث الضغط على زر ( تطبيق ) ، وسنعطي هذا ال****ز تاريخاً للانتهاء :
C#:
كود PHP:
string color;
        if (
RadioButton1.Checked)
        {
            
color "Green";
            
Panel1.BackColor System.Drawing.Color.Green;
        }
        else if (
RadioButton2.Checked)
        {
            
color "Red";
            
Panel1.BackColor System.Drawing.Color.Red;
        }
        else
            
color "";
        
Http****** ****** = new Http******("myColor"color);
        ******.
Expires DateTime.Parse("01/01/2009");
        
Response.******s.Add(******); 
vb.net:
كود PHP:
Dim color As String 
If RadioButton1.Checked Then 
    color 
"Green" 
    
Panel1.BackColor System.Drawing.Color.Green 
ElseIf RadioButton2.Checked Then 
    color 
"Red" 
    
Panel1.BackColor System.Drawing.Color.Red 
Else 
    
color "" 
End If 
Dim ****** As New Http******("myColor"color
******.
Expires DateTime.Parse("01/01/2009"
Response.******s.Add(******) 
والآن في حدث ال Form_Load للتشغيل ، سنقوم بقراءة ال****ز ، وفي حالة وجود myColor فسيتم معرفة قيمته :

C#:
كود PHP:
if (Request.******s["myColor"]!=null)
        {
            
string color Request.******s["myColor"].Value;
            if (
color=="Green")
                
Panel1.BackColor System.Drawing.Color.Green;
            else if (
color=="Red")
                
Panel1.BackColor System.Drawing.Color.Red;
        } 
vb.net:
كود PHP:
If Request.******s("myColor"IsNot Nothing Then 
    Dim color 
As String Request.******s("myColor").Value 
    
If color "Green" Then 
        Panel1
.BackColor System.Drawing.Color.Green 
ElseIf color "Red" Then 
        Panel1
.BackColor System.Drawing.Color.Red 
    End 
If 
End If 
Application .

طريقة أخرى مشتقة من HttpApplicationState ، ولكن من خلالها لا يتم تخزين البيانات لعميل واحد ، بل يتم تخزين بيانات يمكن ان تصل لجميع العملاء ، ابسط مثال لها هو عدد الزوار والذي ينبغي ان يكون مؤثراً عند جميع العملاء وليس عميل واحد فقط .
تحتوي هذه الفئة على الدوال والخصائص التالية :

Add() : اضافة عنصر جديد باسم جديد للقائمة .
AllKeys : استعراض جميع العناصر الموجودة .
Count : معرفة عدد العناصر الموجودة .
Lock(), Unlock() : السماح او عدم السماح بتعديل المجموعة .
RemoveAll(), Remove(), RemoveAt() : تستخدم لحذف عنصر في نقطة معينة ، أو باسم معين ، أو حذف الكل وذلك على الترتيب .

يمكنك اضافة Application جديد بالشكل التالي :
C#:
كود PHP:
Application["Visitors"] = 1
vb.net:
كود PHP:
Application("Visitors") = 
ويمكن استعادتها في مربع عنوان مثلاً :
C#:
كود PHP:
labelVistor.Text=(string)Application["Visitors"]; 
vb.net:
كود PHP:
labelVistor.Text DirectCast(Application("Visitors"), String
ولتعديل قيمة مثلاً :
C#:
كود PHP:
Application["Visitor"]= ((int)Application["Visitor"])+1
vb.net:
كود PHP:
Application("Visitor") = CInt(Application("Visitor")) + 

*** لاتنس ان محتويات ال Application قد لا تكون نص فقط ، بل قد تكون مصفوفة من الفئات مثلاً ...

Cache :
تقنية أخرى مختصة بالتطبيق عند جميع أجهزة العملاء ، ولكن يمكنك تحديد فترة معينة فقط لها ، لانشاءها نستخدم الأمر التالي مثلاً :
C#:
كود PHP:
Context.Cache["myCache"] = "hii, my first cache"
vb.net:
كود PHP:
Context.Cache("myCache") = "hii, my first cache" 
وللاستعادة :

C#:
كود PHP:
string myCache = (string)Context.Cache["myCache"]; 
vb.net:
كود PHP:
Dim myCache As String DirectCast(Context.Cache("myCache"), String
Global.asax :

آخر جزئية لدينا في درس اليوم هي استخدام ملف Global.asax لتخزين متغيرات Global ودوال يمكن الوصول إليها من اي صفحة ، قم باضافة عنصر جديد وقم باختيارها بالشكل التالي :



بعد اضافتك لهذه الصفحة ، ستجد بها افتراضياً الأكواد التالية :
كود PHP:
<%@ Application ********="C#" %>
<****** 
runat="server">
    
void Application_Start(object senderEventArgs e
    {
        
// Code that runs on application startup
    
}
    
    
void Application_End(object senderEventArgs e
    {
        
//  Code that runs on application shutdown
    
}
        
    
void Application_Error(object senderEventArgs e
    { 
        
// Code that runs when an unhandled error occurs
    
}
    
void Session_Start(object senderEventArgs e
    {
        
// Code that runs when a new session is started
    
}
    
void Session_End(object senderEventArgs e
    {
        
// Code that runs when a session ends. 
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer 
        // or SQLServer, the event is not raised.
    
}
       
<
/******> 
وكما لاحظت ، تحوي هذه الصفحة على تعريفات لدوال رئيسية خاصة بالتعامل مع كافة انواع ال State Management ، اضافة لحالة حدوث الأخطاء Application_Error وغيرها من دوال تفيد في ادارة كامل صفحات المشروع ، ويمكنك الاستفادة منها في جميع استخداماتك لعناصر State Management المختلفة التي تعرفنا عليها في هذا الدرس .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
  #2  
قديم 04-12-2010, 06:37 AM
tdi4 tdi4 غير متواجد حالياً

عضو جديد

 
تاريخ التسجيل: Apr 2010
العمر: 37
المشاركات: 7
افتراضي

جزاك الله خيرا اخي الكريم


رد مع اقتباس
  #3  
قديم 04-12-2010, 03:52 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي

جزانا واياك وهلا بك بيننا


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
  #4  
قديم 04-12-2010, 04:16 PM
tdi4 tdi4 غير متواجد حالياً

عضو جديد

 
تاريخ التسجيل: Apr 2010
العمر: 37
المشاركات: 7
افتراضي

أخي خالد عندي إستفسار حول كيفية إرجاع المنيو إلى العربي
يعني ال Separator يرجع شمال مو يمين
عايز أرفق صورة بس ماعندي صلاحية
وشكرااا


رد مع اقتباس
  #5  
قديم 04-12-2010, 04:21 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي

اقتباس
مشاهدة المشاركة المشاركة الأصلية كتبت بواسطة tdi4
أخي خالد عندي إستفسار حول كيفية إرجاع المنيو إلى العربي
يعني ال Separator يرجع شمال مو يمين
عايز أرفق صورة بس ماعندي صلاحية
وشكرااا


يمكنك اخي رفع الصورة على هذا الموقع ومن ثم اعطائنا الرابط هنا في المنتدى

http://www.islamup.com

وجزاك الله خيرا


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
  #6  
قديم 04-12-2010, 04:27 PM
tdi4 tdi4 غير متواجد حالياً

عضو جديد

 
تاريخ التسجيل: Apr 2010
العمر: 37
المشاركات: 7
افتراضي

http://www.islamup.com/download.php?img=87524


رد مع اقتباس
  #7  
قديم 04-12-2010, 04:30 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي

اقتباس
مشاهدة المشاركة المشاركة الأصلية كتبت بواسطة tdi4
أخي خالد عندي إستفسار حول كيفية إرجاع المنيو إلى العربي
يعني ال separator يرجع شمال مو يمين
عايز أرفق صورة بس ماعندي صلاحية
وشكرااا

هل تقصد ارجاعه الى الانجليزية ؟؟؟


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
  #8  
قديم 04-12-2010, 05:58 PM
tdi4 tdi4 غير متواجد حالياً

عضو جديد

 
تاريخ التسجيل: Apr 2010
العمر: 37
المشاركات: 7
افتراضي

لا هو أصله إنجليزي
شوف الصورة دي انا عملت لها توضيح
http://www.islamup.com/download.php?img=87531


رد مع اقتباس
  #9  
قديم 04-12-2010, 06:09 PM
tdi4 tdi4 غير متواجد حالياً

عضو جديد

 
تاريخ التسجيل: Apr 2010
العمر: 37
المشاركات: 7
افتراضي

إدا كان ممكن ارجعها عربي
بس ادا كانت عندك فكرة
وأستسمح على الإزعاج أخي الفاضل.


رد مع اقتباس
  #10  
قديم 04-13-2010, 01:26 AM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي

اقتباس
مشاهدة المشاركة المشاركة الأصلية كتبت بواسطة tdi4
إدا كان ممكن ارجعها عربي
بس ادا كانت عندك فكرة
وأستسمح على الإزعاج أخي الفاضل.


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

فان وجدتها باذن الله ساخبرك بها

وجزاكم الله خيرا


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
  #11  
قديم 04-20-2010, 02:25 PM
tdi4 tdi4 غير متواجد حالياً

عضو جديد

 
تاريخ التسجيل: Apr 2010
العمر: 37
المشاركات: 7
افتراضي

شكراا على المجهود


رد مع اقتباس
إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الخامس والسبعون : ASP.net - الجزء الثاني - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-11-2010 06:55 PM
الدرس الرابع والسبعون : ASP.net - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-11-2010 06:44 PM
الدرس الثالث والسبعون : مقدمة إلى تطوير المواقع - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-11-2010 06:37 PM
الدرس الثالث : عالم ADO.net وما يتعلق به - الجزء الثالث - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-11-2010 03:14 PM
الدرس الحادي والخمسون : System.IO - الجزء الثالث والأخير - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-01-2010 01:52 PM

استضافة الحياة

الساعة الآن 11:22 AM.


Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية
Ads Management Version 3.0.1 by Saeed Al-Atwi

SlamDesignzslamDesignzEdited by Riad Al-Ganah Team - جميع الحقوق محفوظة لشبكة رياض الجنة

Privacy Policy Valid XHTML 1.0 Transitional By SlamDesignz Valid CSS Transitional By SlamDesignz