تعبئة Comboxes من قاعدة البيانات ASP.Net - ASP.Net - مقـــالات - Top Coder
Welcome to our Site
الدخــول Or تسجـــيل
الأربعاء
2016-12-07
5:20 PM
تسجــــيل | دخـــول
الرئيسية » مقالات » ASP.Net

تعبئة Comboxes من قاعدة البيانات ASP.Net
تعبئة Comboxes من قاعدة البيانات 

مقـــدمه
شرح لكيفية تعبئه عناصر ComoBox من قاعدة بيانات سيكوال , وأيضاُ كيفية تعبئة ComboBox أخر عند اختيار قيمة من ال ComboBox الأولى .

وللتوضيح فان الكومبو في ASP يمثله كنترول DropDownList ولكن تم استخدام اسم كومبو للتبسيط , ولإستخدامه كثيراً .
تجهيز قاعدة البيانات  
سنقوم بعمل قاعدة بيانات بسيطه تحتوي على جدولين فقط للإيضاح , حيث يحتوي الجدول الأول على أسماء الدول , والثاني على المدن , وهذا شكل الجدولين



بحيث كل صف في جدول المدن يحتوي على id خاص بالدوله التي تنتمي لها , ونحن الأن نحتاج ان نملئ الكومبو الأول بأسماء الدول , بحيث عند اختيار المستخدم دوله معينه من الكومبو الأول , تقوم الصفحة بتحميل أسماء المدن التابعه لتلك الدوله في الكومبو الثاني , وبالتالي فنحن بحاجة لأمرين , الأول يأتي باسماء الدول , والثاني يأتي باسماء المدن لدوله معينه , وسنستخدم في بناء الأمرين داخل السيكوال عن طريق Stored Procedure  , وهذا كويري الأمرين في السيكوال  
GetCountries Proc
GetCities proc
 
حيث ال proc الأول يقوم بجلب أسماء الدول وال id الخاص بكل دوله من جدول countries , حيث هذا ال id هو الذي سيمرر الى ال proc الثاني , حيث يقوم ال proc الثاني بجلب كل المدن التي لها country_id مساوياً للمتغير @country_id  
ربط البيانات بصفحة الويب
وللعلم فالموضوع أيضاً يمكن تطبيقه في الويندوز ابليكيشن وبنفس الطريقه , لكن فضلت تطبيقه على صفحات الويب لأنه يطبق بكثره على تطبيقات الويب .
في البدايه سنقوم بعمل 2 كومبوبوكس , الأول country_list سنقوم بتعبئته بأسماء  الدول عند تحميل الصفحه , وعند قيام المستخدم بأختيار اسم دوله منه , ستقوم الصفحه بتحميل أسماء المدن التابعه لهذه الدوله في الكومبو الثاني cities_list .

اولاً وقبل عمل الدوال التي تربط بالسيكوال , سنقوم بتخزين ConnectionString في ملف Web.config , حيث سنقوم بوضه هذا الكود داخل ملف ال Web.Config داخل Configuration
 
 
حيث قمنا بتخزين قيمة تسمى ConStr داخل الملف , ووضعنا لها قيمة ConnectionString الخاص بالاتصال مع قاعدة البيانات , وعند الحاجة لإستدعاءها داخل الكود سيكون بالكود
 
 
وبعد تخزين الاتصال داخل ملف Web.config ومعرفة طريقة جلب القيمة منه , سنقوم بالبدء بالربط مع قاعدة البيانات , فسنبدأ بعمل دالة تعبئة الكومبو الأول بأسماء الدول  
FillCountries Method
 
ففي البدايه تم عمل كونيكشن بالسيكوال , ووضع قيمة ConnectionString من ملف web.config كما تم ذكرها من قبل وايضا امر سيكوال لتنفيذ الاوامر داخل السيكوال , وفي الداله تم ربط الأمر بالإتصال , وتم عمل كل الخطوات العاديه , وتم استقبال البيانات بواسطه reader , والخطوة المهمه داخل هذا الكود , هي وضع القيم من reader الى الكومبوبوكس , حيث يتم عمل ListItem , حيث توضع قيمة ال text مساويه للعمود Country الذي يحمل أسماء الدول , وقيمة value مساويه ل id الدوله , حيث سيكون كل عنصر داخل الكومبو يعرض اسم الدوله , ويحمل قيمة ال id بداخله

ولا يبقى الا تنفيذ الداله في page_load , حيث يوضع الكود التالي داخل الحدث page_load , حيث نضع جملة if للبوست باك للصفحه , بحيث ينفذ الكود عند التحميل الأول فقط للصفحه , بحيث عندما تتغير قيمة الكومبو , وتقوم الصفحة بعمل لوود , لا ينفذ الكود مره اخرى .

وبالنسبه للكومبو الأول نقوم بتغيير قيمة البروبرتي AutoPostBack لتكون true بحيث تقوم اصفحة بالتحميل وتنفيذ الكود مع تغير الكومبو .
وهذا كود البيج لوود , وأيضاً دالة تعبئة أسماء المدن
 
 
 
حيث تحمل هذه الداله نفس الخطوات تقريبا للداله الاولى , مع اختلاف اسم proc الخاص بالمدن , وأيضاً مع اختلاف وجود معامل country_id الذي سيمرر للدالة الثانيه من خلال value الكومبو الأول التي تم تخزينها على اساس country_id , بحيث عند قيام المستخدم باختيار اسم دوله من الكومبو الأول , سيتم تحديد ال value الخاصه بهذه الدوله , وبالتالي تنفيذ الداله الثانيه وتعب\ة الكومبو الثاني بالمدن التابعه لهذه الدوله , حيث يتم تنفيذ هذه الداله في حدث SelectedIndexChanged الخاص بالكومبو الأول بحسث يكون الكود :
country_list_SelectedIndexChanged
إستخدام adapter في تعبئة الكومبو
يمكن أيضاً استخدام طريقة diconnected في تعبئة الكومبو , حيث على سبيل المثال يمكن استبدال الداله FillCities بدالة اخرى تقوم بنفس الوظيفه  
FillCitiesByAdapter
 
حيث كل الإختلاف في استبدال طريقة استقبال البيانات , حيث كانت الطريقه بالاستقبال عن طريق reader اما الأن سيتم استقبالها في جدول من خلال Adapter - وهذه طريقة disconnected state للربط بالسيكوال ويمكنك الإطلاع على تفاصيل أكثر عن الطريقه في المقاله http://topcoder.ucoz.com/publ/sql_disconnected_state/2-1-0-53

ثم يتم ربط الجدول بالكومبو من خلال :
1- dataSource حيث يوضع الجدول كمصدر بيانات للكومبو .
2- DataTextField يوضع بها اسم العمود الخاص بأسماء الدول , حيث هذا البروبرتي خاصه بنص العنصر داخل الكومبو .
3- DataValueField ويوضع بها اسم العمود الذي سيستخدم كقيمة للعنصر , وتساوى باسم عمود id الدول .
4- استدعاء دالة DataBind , وهي ضروريه لكل تغيير على الكومبو .

وبنفس الطريقه يمكن عمل دالة تعبئة الدول واستبدالها بالداله الأولى  
تحميل المشروع
 Written by :  Mohammed Mahmoud
الفئة: ASP.Net | أضاف: ham_mody2000 (2011-10-16 4:47 PM)
مشاهده: 2970 | تعليقات: 2 | الترتيب: 0.0/0


أترك تعليقك من خلال حسابك على الفيس بوك

تعليقات مشتركي الموقع

مجموع المقالات: 2
1  
متشكره جداااااااااا يا بشمبرمج بجد الموضوع ده جه فى وقته .......... ربنا يكرمك ويوفقك

2  
بالتوفيق ان شاء الله

إضافة تعليق يستطيع فقط المستخدمون المسجلون
[ التسجيل | دخول ]
طريقة الدخول
بحث
Our Facebook community

تم إطلاق صفحة توب كودر على الفيس بوك

Advertisment
الأحـــدث
hitstatus
Copyright Mohammed Mahmoud © 2016
إنشاء موقع مجاني с uCoz