2010-07-26 9 views
7

Ich muss eine Reihe von Daten in einer Tabelle auf einer Website als Teil eines Berichts anzeigen. Das Problem ist, es gibt eine Menge davon, und es muss visuell gruppiert werden.Dreifach gruppiert nach Tabellendaten - wie wird angezeigt?

Jedes Stück Daten ist eine "Verwendung" eines Artikels und hat ein Datum (das angibt, wann es verwendet wurde), eine Filialnummer (entsprechend dem Geschäft, die es verwendet hat), einen Artikelnamen (das Element, das war verwendet) und eine Menge (die Menge des Artikels, die verwendet wurde).

Der Benutzer wird die Möglichkeit haben, entweder nach Artikel zu gruppieren, dann zu speichern oder nach Geschäft, dann Artikel. Hinter den Kulissen werde ich auch nach Datum gruppieren.

Der Bericht muss die Mengen sowohl nach Artikel/Filiale (abhängig von der Gruppierung nach Option) als auch nach Datum und Summe der Subsummen summieren.

Die Sache ist, ich bin mir nicht sicher, wie ich es anzeigen soll. Das Beste, was ich jetzt mit oben kommen kann ist so etwas wie

      ++------+------+------+------++-----+ 
          || date | date | date | date || sum | 
+-----------+--------------||======+======+======+======||=====+---+ 
| Item Name | Store Number || 1 | 2 | 3 | 4 || 10 |^| 
|   +--------------||------+------+------+------||-----|---| 
|   | Store Number || 5 | 6 | 7 | 8 || 26 | # | 
|   +--------------||------+------+------+------||-----| # | 
|   | Store Number || 9 | 10 | 11 | 12 || 42 | # | 
|   +--------------||------+------+------+------||-----| | 
|     Total || 15 | 18 | 21 | 24 || 78 | | 
+==========================++===========================++=====| | 
| Item Name | Store Number || 1 | 2 | 3 | 4 || 10 | | 
|   +--------------||------+------+------+------||-----| | 
|   | Store Number || 5 | 6 | 7 | 8 || 26 | | 
|   +--------------||------+------+------+------||-----| | 
|   | Store Number || 9 | 10 | 11 | 12 || 42 | | 
|   +--------------||------+------+------+------||-----|---| 
|     Total || 15 | 18 | 21 | 24 || 78 | v | 
+==========================++===========================++=====+---+ 
          | < | ####    | > | 
          +---------------------------+ 

Zur Gruppe von Artikeln dann zu speichern, oder Switch „Item Namen“ mit „Nummer speichern“ für die Gruppe von Speichern dann Artikel.

Die Datumsspalten (viel mehr als nur vier) würden nach links/rechts rollen und die Elemente/Speicher würden nach oben/unten scrollen, um die Tabelle auf einer Seite zu halten. Mit anderen Worten, die Datumskopfzeilen werden vertikal an Ort und Stelle eingefroren, und der Elementname, die Speichernummern und Summen werden horizontal eingefroren.

Das Problem wäre mit der Implementierung: wie zum Teufel ich das in HTML darstellen !?

Die bessere Frage ist: Gibt es einen besseren Weg?

Was ist Ihr Rat zur Lösung dieses Problems? (Vorzugsweise elegant und leicht)

Antwort

1

Ich denke, die beste Lösung für Gruppe sind die Daten nach Artikel, wie das folgende Bild http://img51.imageshack.us/img51/6434/layoutsv.png

Die HTML so etwas wie die Folowing wäre:

<div style="overflow: auto; width: 100%; height: 500px"> 
    <h1>Item 1</h1> 
    <table> 
     <tr> 
      <th></th> 
      <th>Date</th> 
      ... 
      ... 
     </tr> 
     <tr> 
      <th>Store #</th> 
      <td>1</td> 
      ... 
      ... 
     </tr> 
     ... 
     ... 
    </table> 
    <h1>Item 2</h1> 
    ... 
    ... 
</div> 

Für die feste Spalte, die Sie achten sollten hier: HTML table with fixed headers and a fixed column?

+0

Das ist etwas, worüber ich nicht nachgedacht habe. Ich habe die Tendenz, Dinge zu kompliziert zu machen: D. Übrigens, willkommen bei StackOverflow! –

+0

@Austin Vielen Dank! Viel Glück mit der App! :) – cesarnicola

1

Es ist machbar, aber ich würde das nicht in html direkt selbst tun. So komplex es auch sein wird, es einzurichten, es wird nur schwierig sein, es später zu ändern, wenn sich die geschäftlichen Anforderungen ändern.

Wenn Sie es am Ende versuchen, würde ich empfehlen, Konzepte von gestapelten und eingebetteten Tabellen, scrollenden divs und festen/überlappenden divs zu betrachten. Trotzdem wird es keinen Spaß machen, etwas so komplexes in mehr als nur einer Art von Browser zu arbeiten.

Ich würde empfehlen, in einige übergeordnete Tools zu suchen. ASP.NET hat einige gute Steuerelemente für diese, wenn Sie immer noch einen etwas manuellen Ansatz verwenden möchten. Sie verfügen über integrierte Steuerelemente, die im Code geändert werden können, oder Sie können Tabellen (im Gegensatz zu Markup-Tabellen) codieren und dennoch das Ereignismodell zum Abfragen/erneuten Abfragen der Datenbank nutzen.

Besser noch, Sie könnten ein Reporting-Tool wie SSRS (und es gibt viele andere) oder sogar MS Access für grundlegende Bedürfnisse.

+0

Danke für die Tipps. Wirklich, dies richtet sich an eine sehr kleine Zielgruppe (unter 5) mit standardkonformen Browsern (Hallelujah!). Leider benutze ich PHP als Backend, also ASP's out und SQLite, also SSRS/Access out. Egal wie ich vorankomme, ich werde die Tabelle auf jeden Fall dynamisch generieren, egal ob JavaScript oder PHP. Auf der positiven Seite, ASP-Steuerelemente sind nur vorfabrizierte HTML-Chunks, also wenn sie es können, kann ich es tun ... –

Verwandte Themen