| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| 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 هذه الطريقة سوف تقطع لك الشك باليقين للتأكد الان نعود الي موضوعنا ماهو الحل في عملية Page.IsPostBack ومشكلة كود تحديث البيانات لكي اجعله يقوم بتحديث الحقول ووضع اسم 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 والتي ادخلتها وسوف يتم تحديثها في قاعدة البيانات ان شاء الله اكون وفقت بالشرح في امان الله
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
بارك الله فيك أخوي أحمد .. درس مهم، ومفيد للمبتدئين .. وأنا مررت بمثل هذه المشكلة والأخ أحمد لم يقصر كعادته ![]() ومزيداً من هذه اللمح المهمة ..
__________________ بداية للمشاريع التجارية ASP.NET,ASP 3.0 المدونة الشخصية : asp2asp.com عدنا والعود أحمد... | |||||
|
![]() |
| أدوات الموضوع | |
| |
المواضيع المتشابهه | ||||
| الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
| ما الجديد في MySQL 5 | Mr.eslam | تطوير الويب | 9 | 02-06-2006 01:08 AM |
| مساحة 100 ميجا ب 30 ريال سنويا -حقيقه لاخيال- | سراب النفود | قسم تبادل خبرات الاستضافة | 2 | 27-02-2006 12:28 PM |
| طريقة الربط مع قاعدة البيانات من ال ASP | طائر اليمام | PHP | 6 | 20-12-2003 05:18 PM |
| مشكله في تحديث البيانات Update Counters | LORANCE | إصلاح وصيانة المنتديات | 2 | 30-08-2003 08:13 AM |
| أبحث عن كود Page.IsPostBack ومشكلة كود تحديث البيانات التلقائي بمجرد فتح الموقع | fasal | تطوير الويب | 1 | 02-05-2001 12:10 PM |