خلق الكائنات مدفوعا قاعدة البيانات لملء عنصر تحكم Treeview - بطيئة جدا

StackOverflow https://stackoverflow.com/questions/56224

سؤال

يجب تطبيق ما يلي جدول من قاعدة البيانات.

أنا إصدار استعلام SQL للحصول على نتيجة تعيين على أساس فريدة من نوعها من سلسلة القيمة الذي استخلصه من نتائج استخدام القضية/بيان التبديل إلى إنشاء بعض الكائنات (فإنها ترث TreeNode راجع للشغل).هذه الكائنات التي تم إنشاؤها على القوا في القاموس كائن لاستخدامها في وقت لاحق.

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

أنا الاستعلام القاموس العودة إلى كائن معين ونوع استخدامه لملء عنصر تحكم treeview.ومع ذلك فإنه ليس من الممكن لملء 2 كائنات من نفس النوع في treeview من القاموس كائن (كنت تحصل على خطأ وقت التشغيل - الذي يهرب مني في لحظة ما مع الرجوع إلى نفس الكائن).لذلك ما عليك القيام به هو استخدام memberwiseClone وتنفيذ IClonable للالتفاف حول هذا.

أنا أفعل هذا صحيح ؟ هل هناك طريقة أفضل - لأنني أعتقد أن هذا هو مما تسبب في البرنامج أن يكون بطيئا في هذه المرحلة.على الأقل أعتقد عالي الكعب قليلا - أي نصيحة من الناس الذين يعرفون أكثر مني - تقدير كبير.

هل كانت مفيدة؟

المحلول

إضافة إلى @براد, فقط ملء الشجرة حسب الحاجة.وهذا يعني ربط إلى توسيع حالة العقد شجرة.هذا هو مماثل لكيفية مستكشف Windows وظائف عند التعامل مع شبكة سهم.

يجب أن يكون هناك 1 TreeNode الكائن في الفعلية شجرة عقدة في الشجرة - لا تحاول إعادة استخدام الأشياء.يمكنك إما ربطها مع البيانات الخاصة بك باستخدام الوسم الملكية (هذا هو الأسلوب المستحسن), أو يمكنك فئة فرعية TreeNode نفسها (هذه هي طريقة جافا ، ولكن تستخدم أقل .NET).

(استخدام استنساخ أساليب عادة تلميح بأنك إما (أ) القيام بشيء خاطئ ، أو (ب) تحتاج إلى عامل النطاق الخاص بك نموذج منفصلة قابلة للتغيير من الكائنات غير قابل للتغيير.)

نصائح أخرى

هل هناك سبب كنت تستخدم الخارجية القاموس ؟ وأود أن تعيش شجرة مباشرة مثل بيانات الاستعلام.

إذا كنت لا تحتاج إلى القاموس ، يمكن تعيين .الوسم الملكية من شجرة عقدة للإشارة إلى البيانات في القاموس الخاص بك.

هل يعتبر استخدام الظاهري التدرجي الذي يحمل سوى العقد المستخدم يريد فعلا أن ننظر - لقد كان نجاح جيدة مع المكون من www.infralution.com

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top