Frage

Ich habe einige Daten, die in tabellarischer Form mit mehreren Abschnitten dargestellt werden müssen. Insbesondere wird jeder Abschnitt der Daten aufgebrochen (mit einem eigenen Header) für Tag. Dies ist im Grunde ein einmaliger einzelne Seite Deal, und wird nicht wirklich eingehalten werden, so will ich nicht viel Mühe in der Architektur setzen.

Ich habe zwei Tabellen. Köpfe und -positionen.

HEADERS haben ein Format von:

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

PUNKTE hat ein Format von

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

ich brauche die Daten ähnlich wie diese aussehen (erste und Zweitlinien werden Daten gefüllt, dritte Zeile wird statischer Text, Positionszeilen bevölkert sind Daten):

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] |
--------------------------------------------------------------------------

Dies wird für alle Tage wiederholen sich derzeit in der Datenbank, jeden Tag mit einer eigenen Header seinen eigenen Tisch haben. Sie werden auch nach Typ gefiltert werden. wird die Seite zeigen nur Überschriften und Gegenstände des Typs angegeben. Typ ist ein tinyint.

Die Frage ist also: Was ist die beste ASP.NET-Elemente zu verwenden? Datalist? Rasteransicht? Und wie kann ich die Daten aus zwei Tabellen in einem Header / Stück Format enthalten?

EDIT: Leider vergaßen zu erwähnen, dass dies unter Windows arbeiten hat 2000 / IIS5, so ist sie fest mit ASP.NET 2.0 und nicht 3.0 oder 3.5 Funktionen verwenden.

War es hilfreich?

Lösung 5

Ok, here die mögliche Lösung kam ich mit. Ich bin sicher, dass dies nicht die effizienteste, oder die schnellsten, aber ich brauche nur, um es getan und bewegen Sie sich mit etwas anderem.

Mein erster Schritt eine Basisklasse zu schaffen war, die ich RowBase genannt, war dies eine abstrakte Klasse, die eine abstrakte Methode implementiert genannt GetRow (); Dann abgeleitet ich zwei weitere Klassen, BannerRow und ItemRow von RowBase. Diese Klassen enthalten Felder mit allen Daten, die in meinen Tabellen.

Ich habe dann zwei DataTables- und füllte sie mit den Ergebnissen meiner beiden Abfragen über einen Dataadapter.

Als nächstes habe ich eine Liste und interated über die Datentabellen, die Schaffung entweder ein BannerRow oder ItemRow je nach der Art der Reihe.

Als nächstes lief ich eine List .Sort, auf Datum und Art der Reihe Sortier sicher, dass BannerRows Hand Vorrang vor ItemRows zu machen.

Schließlich habe ich eine Tabelle auf meinem Webformular platziert erstellt, setzen Sie ihn = „server“ runat mit id = „maintable“ und dann iterativ ich meine List über und GetRow auf jeder RowBase.

genannt

BannerRow und ItemRow hatten jeweils eine Überschreibung von GetRow (), die eine HtmlTableRow zurück formatiert, um die Daten im richtigen Format enthalten. Dann hatte ich etwas bedingte Logik Kopfzeilen für die ItemRow Daten eingefügt werden alle ausgearbeitet.

Dies ist eine Variation von Rob und Bens Idee, aber viel mehr Massieren der Daten enthalten ist, so habe ich sich beide upvotes, sondern mich mit der Antwort ist Kreditierung.

Andere Tipps

Hier finden Sie aktuelle asp: Tabelle. Sie können programmatisch die Zeilen und Spalten in einigen verschachtelten bedingten Iterationen im Code hinzuzufügen.

Ich würde empfehlen, die Daten als XML Rückkehr dann eine XSLT mit Ihrem Bericht zu erstellen. Andernfalls müssen Sie verschachtelte Gridviews oder Repeater verwendet werden.

Wenn das Muster gilt jedes Mal mit der gleichen Anzahl von Linien usw. Ein Repeater kann die beste Wahl sein, und gibt Ihnen die Kontrolle darüber, wie das Layout sieht auf dem Bildschirm.

Stellen Sie einen <asp:Table> auf der Seite und es baut sie hinter von Code auf.

Mit dem colspan Parameter für die Spalten (Zellen), da dies ermöglicht es Ihnen, Einträge zu erstellen, die für die Zeilen über viele Spalten erstrecken, die zu benötigen.

Für Ihre App oben, würde dies bedeuten, dass First Line und Second Line würde ein colspan von 5 haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top