سؤال

قبل أن أفعل هذا فكرت أنني سأسأل إذا كانت هذه هي الطريقة الأفضل.يحتوي كل كائن "بائع" على كائن "دلو".في جهاز التكرار الخاص بي، أحتاج إلى عرض بعض الخصائص من Vendor وبعضها من Bucket، وأيضًا بعض الصور المملوءة بواسطة FileSystem المرتبطة بالمورد.اعتقدت أن أفضل طريقة للقيام بذلك هي ربط المكرر بكائن البائع، ثم في ItemDataBound سأقوم بملء الصور والمجموعات بناءً على البائع المرتبط بتلك العناصر المعينة[e.Item.ItemIndex].

هل هذه هي أفضل طريقة للقيام بذلك؟

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

المحلول

إذا كان كائن المورد يمكنه الاحتفاظ بكائن دلو واحد فقط، فقد يكون من المناسب ربطه جميعًا في مكرر واحد عالي المستوى.يمكنك الوصول إلى الجرافة من خلال ربط البيانات البسيط، كل ذلك في المستوى الأعلى دون تجاوز ItemDataBound.

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

<%# DataBinder.Eval (Container.DataItem, "Bucket.Property" ) %>

تريد إجراء ItemDataBound إذا كان يجب عليك "معالجة شيء ما" أثناء كل تكرار للربط وتحتاج إلى وصول تفصيلي إلى كل كائن بائع لاتخاذ القرار.

إذا كان كائن المورد يمكنه الاحتفاظ بعدة دلاء، فإن أفضل طريقة للوصول إلى ذلك هي من خلال ItemDataBound.في كل تكرار للمورد، يمكنك ربط مكرر جديد متداخل لعرض بيانات المجموعة، أو تنفيذ أي وظيفة تكرار/تجميع قد تحتاجها.

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

نصائح أخرى

هذه هي الطريقة التي أقوم بها عادة، وأربط الكائن الرئيسي وأتعامل مع التفاصيل الموجودة في ItemDataBound.

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