الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن استخدام الأداة Treeview لقراءة عدد من الأقسام في عدد غير معروف من ال Nodes

بدأه Mr.Mando في 4 فبراير 2009 · 8 رد · 1,049 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني الكرام أنا بحثت كتير عن الموضوع بلا جدوى وسؤالي سأحاول شرحه

المشكلة تتلخص في أنني لدي عدد من الأقسام يتحكم فيها المستخدم يمكنه الإضافة والحذف منها كما يشاء

كما يمكن إضافة المزيد من الأقسام الفرعية داخلها

وداخل الأقسام الفرعية يمكن إضافة أقسام فرعية أخرى لها...إلخ

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

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

وإذا أردت قراءة مستوى أعمق على الـ TreeView فيجب أن أضيف Loop جديدة للكود...وهذا بالطبع حل غير عملي حيث أنه سيجعل هناك قصور في البرنامج

وسؤالي هو

كيف يمكن قراءة كل قسم ووضعه في مكانه الصحيح مع العلم أن العدد متغير وقابل للزيادة وعدد الأقسام الفرعية لا نهائي ولا يمكن معرفته بالتحديد عند كتابة الكود حيث أنه كما ذكرت أنه قابل للزيادة ؟

الأمر الأخر

لو وجدت طريقة تمكنني من البحث عن أي Node موجودة على الـ TreeView باستخدام الـ Value الخاصة بها فسوف أتمكن من حل المشكلة إن شاء الله

ويرجى ملاحظة الأمر التالي

لو استخدمنا مثلا ForEach فسنقوم بالبحث في TreeView1.Nodes ولن يتم البحث في الأقسام الفرعية

أرجوا أن يكون الأمر قد اتضح للجميع

وبانتظار الردود

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#2
اقتباس
وسؤالي هو

كيف يمكن قراءة كل قسم ووضعه في مكانه الصحيح مع العلم أن العدد متغير وقابل للزيادة وعدد الأقسام الفرعية لا نهائي ولا يمكن معرفته بالتحديد عند كتابة الكود حيث أنه كما ذكرت أنه قابل للزيادة ؟

الحل باستخدام recursion بمعني انا تستدعي الدالة نفسها

و الدالة تستقبل معاملات عبارة عن القسم و TreeNode لاضافة القسم اليه و عمل foreach للاقسام الفرعية و من ثم استدعاء الدالة مرة اخري داخل foreach

و بهذا يتم تحميل كل الاقسام بالترتيب المطلوب

#3

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

شكرا أخي أحمد على ردك

بس لو أمكن تدعم الشرح بالكود أو يكون في توضيح أكتر علشان أقدر أطبق الفكرة

وإذا مفيش عند حضرتك مانع ممكن أبعتلك الجدول بتاعي ونتواصل عن طريق الماسنجر ولما نوصل للحل نحط الكود هنا علشان تعم الفائدة

شكراً مرة تانية

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#4

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

تم بحمد الله حل المشكلة بنجاح

من لديه سؤال حول هذا الموضوع فليتفضل بطرحه

وشكراً

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#5

السلام عليكم

لا يمكنك أخي حل هذه المشكلة بالكود، فالموضوع ليس تقنياً بحتاً إنما تحتاج إلى تعديل بسيط علي تصميم الجدول الذي تقوم فيه بحفظ الأقسام بحيث يكون على الشكل التالي:

Section_Id

Parent_Id

Section_Name

بحيث أن:

1- حقل Parent_Id يتم فيه تخزين قيمة حقل الـ Section_Id للقسم الأب (الذي بداخله هذا القسم)

2- أقسام المستوى الأول يكون فقيمة حقل Parent_Id هو 0

3- تتطلب هذه الطريقة وجود TreeNode أولى في الشجرة تقوم بإضافتها عند التصميم.

4- حقل Section_Id يجب أن يكون Auto Identity لتستخدمه في ترتيب بيانات الأقسام وهو أساس إستخدام هذا الأسلوب.

5- يجب أن تكون البيانات عند إسترجاعها من الجدول مرتبة بواسطة حقل Parent_Id تصاعدياً بالتالي أول مستوى سيكون للأقسام التي تحتوي على القيمة 0 في حقل الـ Parent_Id وبذلك تضمن سلامة الكود المكتوب من الأخطاء

هذه هي الطريقة التي أستخدمها في التعامل مع الـ TreeNode لعرض البيانات الغير محدودة.

بهذه الطريقة يمكنك كتابة loop واحدة تقوم بوضع جميع محتويات الجدول بغض النظر عن عدد المستويات

والله الموفق

تم تعديل هذه المشاركة بواسطة Ammar Gaffar في 11 فبراير 2009 في 15:43

#6

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

أخي الكريم عمار أولا أشكرك على ردك واهتمامك

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

أما مشكلة القراءة على الأداة TreeView فقد قمت بحلها ولله الحمد والكود يعمل بدون أي مشاكل

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

شكراً مرة أخرى

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#7

اخوانى الكرام

طرحت المشكلة بوضوح أما الحل تتناقشون فيه دون طرح اية فكرة عن

فهل هذا بغرض التشويق ثم ترفقون الحل لتعم الفائدة أما نشوة الفرحة بحل المشكلة انستكم طرحه

اتمنى الحصول على حل المشكلى لأننى اعانيها حالياً

#8

يا Mr.Mando لو تفضلت شرح حل المشكلة لتعم الفائدة

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

#9

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

الأستاذ\ الأستاذة ليدا

المناقشة ليست بغرض التشويق لأنه لم تكن هناك نية لوضع كود جاهز ولكن النقاش يبدوا غامضاً لأني وصلت للحل وفهمته والأخ أحمد الباز والأخ عمار جعفر فاهمين ما نتكلم عنه

أما أي عضو يريد الشرح سنشرح له إن شاء الله ونساعده بالكود

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

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

بالتوفيق

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…