النتائج 1 إلى 2 من 2

الموضوع: Page.IsPostBack ومشكلة كود تحديث البيانات

  1. #1

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370

    Page.IsPostBack ومشكلة كود تحديث البيانات



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

    احد المشاكل التي قد تواجهها في بعض الحالات في ال asp.net هو اعادة تنفيذ حدث تحميل الصفحة مع كل حدث يتم تنفيذه في الصفحة مثل حدث الضغط على زر او غيره

    فمثلا في صفحة تحديث معلومات او حقول معينه في قاعدة البيانات ولنفرض اننا سوف نقوم بنحديث حقل واحد في قاعدة البيانات وهو حقل اسم الطالب

    في صفحة update.aspx
    وفي حدث تحميل الصفحة نقوم بجلب قيمة حقل اسم الطالب في قاعدة البيانات من الجدول المخصص له وبعد هذا نفرغ القيمة العائده لنا في داخل TextBox

    طبعا يكون لدينا زر Button بعد ان يدخل المستخدم القيمة الجديدة لاسم الطالب ويضغط على هذا الزر وهو زر تحديث البيانات يتم تحديث حقل اسم الطالب في قاعدة البيانات ووضع فيه القيمة الموجوده في ال TextBox والتي يكون المستخدم غيرها فعند تحميل الصفحة تكون هذه القيمة هي نفس الموجوده في قاعدة البيانات يقوم المستخدم بتغييرها والضغط على زر التحديث

    جربها بهذا الشكل سوف تلاحظ ان الحقل لم يتم تحديثه ومازال نفس القية الاصليه له !!!!!!!!!!!

    فلو كان الاسم الموجود في حقل قاعدة البيانات هو ahmad
    عند تحميل الصفحة سوف يكون محتوى ال TextBox هو ahmad
    سيقوم المستخدم بتغييره الي mohammad ومن ثم الضغط على زر تحديث البيانات
    في زر تحديث البيانات سوف يقوم بجلب الاسم الموجود في التكست بوكس TextBox وهو mohammad وتحديث حقل الاسم في قاعدة البيانات ليكون mohammad

    ولكن الحقيقه انه حتى هنا سوف يقوم بتحديث حقل الاسم ليضع به ahmad مرة اخرى

    فهما هو السبب ؟ واين ذهب اسم mohammad ؟ وماهو احل ؟


    في بداية الموضوع قلنا انه حدث تحميل الصفحة يتم تنفيذه عند حدوث اي حدث داخل الصفحة
    فلو كان حدث تحميل الصفحة لدينا Textbox1.text = "ahmad"
    ووضعنا اسم mohammad في داخل التكست بكوس textbox
    فم نفذنا اي حدث من احداث الادوات على الصفحة مثل حدث الضغط مرة واحده على الزر Button
    فسوف يتم تحميل وتنفيذ حدث تحميل الصفحة مرة اخرى ومن ثم تنفيذ حدث الموجود في الزر Button وهذا يعني انه سوف يقوم بتنفيذ الكود textbox1.text="ahmad" مرة اخرى قبل تنفيذ الكود الموجود في حدث الضغط على زر Button


    الان فهمنا ماهو السبب الذي يمنع تحديث حقل قاعدة البيانات ؟؟؟

    السبب انه سوف يقوم اولا بتنفيذ كود حدث تحميل الصفحة يعني سوف يقوم بجلب القيمة الاصلية للحقل من جديد ومن ثم افراغها في ال TextBox
    وهذا يعني انه سوف يلغي الاسم mohammad ويضع بدلا منه ahmad ومن ثم يقوم بتنفيذ كود الزر Button وهو كود تحديث الحقل ويضع في الحقل القيمة الموجوده في ال TextBox والتي اصبحت ahmad مرة اخرى


    هذا الامر لا تلاحظه اثناء تنفيذ المشروع طبعا ولكن يمكنك ملاحظته عند تتبع الكود اثناء التنفيذ

    قم بوضع مؤشر الماوس على اول سطر في حدث تحميل الصفحة ومن ثم اضغط F9
    سوف يتم تضليل السطر بلون احمر ووضع نقطة حمراء كبيره بجانبه
    هذا يعني انه سوف يتم تتبع كود البرنامج خطوة خطوة اثناء التنفيذ

    قم بتنفيذ مشروع بالضغط على F5
    سوف تلاحظ ان تنفيذ المشروع قد توقف عند السطر الذي اشرت عليه سابقا
    والان اضغط F10 ليتم تنفيذ المشروع سطر سطر واستمر بالضغط على F10 وتتبع الكود
    هكذا تتبع الكود وتفهم جيدا ماسوف يتم عمله وماهي الخطوة التي سوف تسبق تنفيذها

    انصح المبتدئين في تعلم اللغة استخدام هذه الطريقة في تتبع الكود كثيراً لانها تولد لديك قدرة فيما بعد على الاندماج مع مشروعك اكثر وتتبع الاكواد هذا يحل لك احيانا مشاكل كبيره عندما تتوقع انت انه سيتم تنفيذ كود 1 ومن ثم كود 2 وفي الحقيقه يتم تنفيذ كود 2 اولا ومن ثم كود1

    هذه الطريقة سوف تقطع لك الشك باليقين للتأكد


    الان نعود الي موضوعنا

    ماهو الحل في عملية تحديث الصفحة لكي اجعله يقوم بتحديث الحقول ووضع اسم mohammad به

    احل هو في Page.IsPostBack
    هذه تعود لنا ب False في حالة كان هذا اول مرة لدخول الصفحة بطريقة طبيعيه وليس اعادة تحميل الصفحة مثل تنفيذ احد الاحداث التابعه لاحد العناصر

    يعني عند دخول الصفحة بشكل طبيعي لاول مرة فان Page.IsPostBack تعود لنا بقيمة False
    بينما عند تنفيذ اي حدث مثل الضغط على زر Button فانها سوف تعود لنا بالقيمة True

    الان عرفنا كيف نحل المسألة صار بمقدونا ان نجعل كود جلب البيانات من قاعدة البيانات وافارغها في ال TextBox وهو الموجود في حدث تحميل الصفحة يتم تنفيذه فقط مرة واحد عند اول دخول للصفحة بينما عند الضغط على الزر Button لايتم تنفيذه وذلك من خلال وضعه في داخل جملة شرطيه هكذا

    If Page.IsPostBack = False Then
    هنا كود جلب المعلومات من قاعدة البيانات
    وافراغها في الحقول المخصصة لها
    EndIF


    عند اول دخول للصفحة سوف تعود لنا Page.IsPostBack ب False لذلك سوف يتم تنفيذ كود جلب المعلومات وافراغها في الحقول المخصصة لها

    بينما عند الضغط على الزر Button سوف تعود Page.IsPostBack ب True
    وهذا يعني انه لن يتحقق الشرط اعلاه ولن يدخل ليجلب البيانات ويفرغها في الحقول مرة اخرى
    يعني سوف تبقى ال TextBox تحتوي على القيمة mohammad والتي ادخلتها
    وسوف يتم تحديثها في قاعدة البيانات



    ان شاء الله اكون وفقت بالشرح

    في امان الله





    __________________
    @_@


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    534


    بارك الله فيك أخوي أحمد ..

    درس مهم، ومفيد للمبتدئين .. وأنا مررت بمثل هذه المشكلة والأخ أحمد لم يقصر كعادته

    ومزيداً من هذه اللمح المهمة ..





    __________________
    بداية للمشاريع التجارية

    ASP.NET,ASP 3.0

    المدونة الشخصية : asp2asp.com

    عدنا والعود أحمد...





ضوابط المشاركة

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

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض