سؤال

لدي بعض البيانات التي يجب تقديمها في شكل جدولي مع أقسام متعددة. على وجه الخصوص ، يتم تقسيم كل قسم من البيانات (برؤوسها الخاصة) بعد يوم. هذه في الأساس صفقة واحدة لمرة واحدة ، ولن يتم الحفاظ عليها حقًا ، لذلك لا أريد بذل الكثير من الجهد في الهندسة المعمارية.

انا لدي طاولتان. الرؤوس والعناصر.

الرؤوس لها شكل من:

date(datetime), type(tinyint), firstline(varchar), secondline(varchar)

العناصر لها شكل من

id(int), date(datetime), type(tinyint), name(varchar), value1(int), 
    value2(int), value3(int)

أحتاج إلى البيانات لتبدو مشابهة لهذا (أول خط و secondly هو ملء البيانات ، السطر الثالث هو نص ثابت ، وخطوط العناصر مكتظة بالبيانات):

1/1/2009
--------------------------------------------------------------------------
|                              [First line]                              |
--------------------------------------------------------------------------
|                             [Second line]                              |
--------------------------------------------------------------------------
|  Date |       Name            |   Value 1    |   Value 2   |  Value 3  |
==========================================================================
| [Date]|      [Name]           |  [Value 1]   |  [Value 2]  | [Value 3] |
--------------------------------------------------------------------------
| [Date]|      [Name]           |  [Value 1]   |  [Value 2]  | [Value 3] |
--------------------------------------------------------------------------
1/2/2009
--------------------------------------------------------------------------
|                              [First line]                              |
--------------------------------------------------------------------------
|                             [Second line]                              |
--------------------------------------------------------------------------
|  Date |       Name            |   Value 1    |   Value 2   |  Value 3  |
==========================================================================
| [Date]|      [Name]           |  [Value 1]   |  [Value 2]  | [Value 3] |
--------------------------------------------------------------------------
| [Date]|      [Name]           |  [Value 1]   |  [Value 2]  | [Value 3] |
--------------------------------------------------------------------------

سيتكرر هذا لجميع الأيام الموجودة حاليًا في قاعدة البيانات ، كل يوم له طاولة خاصة به برؤوسها الخاصة. سيتم تصفيةها أيضًا حسب النوع. ستعرض الصفحة فقط رؤوسًا وعناصر من النوع المحدد. النوع هو tinyint.

لذا فإن السؤال هو ، ما هو أفضل عناصر ASP.NET؟ قائمة البيانات؟ عرض شبكي؟ وكيف يمكنني تضمين البيانات من جدولين بتنسيق رأس/عنصر؟

تحرير: آسف ، نسيت أن أذكر أن هذا يجب أن يعمل على Windows 2000/IIS5 ، لذلك أنا عالق مع ASP.NET 2.0 ولا يمكنني استخدام ميزات 3.0 أو 3.5.

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

المحلول 5

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

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

قمت بعد ذلك بإنشاء اثنين من القارات ، وملأتها بنتائج استعلامي عبر DataAdapter.

بعد ذلك ، قمت بإنشاء قائمةu003CRowBase> ومتداخل فوق DataTables ، وإنشاء إما bannerRow أو itemRow اعتمادًا على نوع الصف.

بعد ذلك ، ركضت قائمةu003CRowBase> .SORT ، الفرز في تاريخ ونوع الصف للتأكد من أن BannerRows يسير على الأولوية على العناصر.

أخيرًا ، قمت بإنشاء جدول على webform الخاص بي ، وقم بتعيينه على Runat = "Server" باستخدام id = "maintable" ثم تكررت على قائمتيu003CRowBase> ودعا getrow على كل قاعدة rowbase.

كان لكل من BannerRow و ItemRow تجاوز GetRow () الذي أعاد تنسيق HTMLTABLEROW لتضمين البيانات بالتنسيق الصحيح. بعد ذلك ، استخدمت بعض المنطق الشرطي لإدراج صفوف الرأس لبيانات ItemRow كلها.

هذا تباين في فكرة روب وبن ، ولكنه شمل الكثير من التدليك للبيانات ، لذلك أعطيت كل منهما upvotes ، لكنني أعزى نفسي بالإجابة.

نصائح أخرى

إلقاء نظرة على ASP: الجدول. يمكنك إضافة البرمجيات الصفوف والأعمدة في بعض التكرارات الشرطية المتداخلة في الكود.

أوصي بإرجاع البيانات كـ XML ثم باستخدام XSLT لإنشاء تقريرك. وإلا ، فسيتعين عليك استخدام شبكات GridViews المتداخلة.

إذا كان النمط صحيحًا في كل مرة مع نفس عدد الخطوط ، إلخ.

ضع <asp:Table> على الصفحة وقم بإنشائها من الكود وراء.

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

بالنسبة لتطبيقك أعلاه ، فإن هذا يعني أن السطر الأول والخط الثاني سيكون لهما كولسبان من 5.

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