2009-01-22 5 views
6

Jeder jemals sehen, wie fogbugz ihre Tabellen sortiert? Wenn Sie auf klicken, um die Spalte zu sortieren, wird die Tabelle tatsächlich in viele kleine Tabellen aufgeteilt, die jede Kategorie von Informationen enthalten.Wie Datentabelle wie FogBugz-Fälle sortiert werden Tabelle

Fragen Sie sich, ob jemand weiß, wie sie das machen?

Mit Blick auf diese Funktion zu implementieren.

Wenn Sie einen Blick durch die Fälle Seite, und sortieren Sie können sehen, was ich meine.

Jede Hilfe wäre FANTASTISCH!

Noch habe ich das nicht herausgefunden.

EDIT: @Peter, ich möchte nicht jedes Mal eine Tabelle neu erstellen und neu erstellen, wenn der Titel der Überschrift für eine Sortierung angeklickt wird. Ich möchte auch wissen, ob es sich hierbei um eine generische Lösung handelt. Wenn ich auf die Kopfzeile klicke, um mittels Javascript zu sortieren, trennt es die "eine" Tabelle in viele und ich möchte wissen, ob es eine generische Lösung dafür ist, weil es einfach viel besser ist, eine sortierte Tabelle anzuzeigen.

EDIT: ich einen Javascript-Sortierer müssen, aber wenn Sie rechts unten bei der Umsetzung von Fogbugz aussehen, erzeugt es ein anderes Ergebnis ...

+0

Ein Screenshot wäre hilfreich. Wenn du einen Link hast, poste ihn bitte - sonst ist es wirklich schwer zu verstehen, was du meinst. –

+0

Auch Sie würden gerne diese, wo verwenden, welche Anwendung neu erstellen? Mehr Details werden benötigt –

Antwort

8

Yup, Rich hat es (ich habe dieses Feature in FogBugz vor langer Zeit codiert).

Wenn Sie dies auf dem Client tun müssen, haben Sie keine andere Wahl, als die Daten zu sortieren, iterieren durch Generieren von Tabellenzeile nach Tabellenzeile, und jedes Mal, wenn Sie einen neuen Sortierwert treffen, erstellen Sie einen neuen Text mit entsprechende Information.

Um ehrlich zu sein, es wäre eine ziemlich coole Änderung an diesem jQuery-Plugin: http://tablesorter.com/docs/ und Sie könnten eine Los ihrer Arbeit nutzen.Wenn Sie die Zeit einplanen und eine allgemeine Lösung erstellen, können Sie diese auch der Community zugänglich machen.

+3

Wie großartig ist es, dass die Person, die das Feature in Frage geschrieben hat, tatsächlich die Frage beantwortet hat? +1 –

1

nicht sicher, welche Antwort tun Sie erwarten. Die SQL-Abfrage würde dazu einfach die Reihenfolge in der ausgewählten Spalte verwenden, und die Benutzeroberfläche würde jedes Mal, wenn sich dieser Wert ändert, eine neue Tabelle starten.

Hier ist Screenshot von FogBugz mit dieser Sortierung, nach dem Klicken auf Priorität Spalte.

http://img297.imageshack.us/img297/6974/76755363ee3.png

Natürlich hat neue Tabelle nicht an den Start Sinn für jede Spalte (Titel, Fall #) machen.

Edit: Wenn ich richtig verstehe, suchen Sie nach einer Möglichkeit, wie Sie dies in einem Browser tun, ohne neue Seite zu laden. Wenn dies der Fall ist, würde ich zumindest eine serverseitige Unterstützung vorschlagen, die Ihre Daten in der richtigen Reihenfolge zurückgibt und für Untertabellen richtig strukturiert ist (in xml/json/was auch immer Sie verwenden). Ihr Javascript wird diese Daten verwenden, um Tabellen neu zu erstellen. Ich bin mir sicher, dass andere mit mehr Web-UI-Erfahrung Ihnen bessere Antworten liefern werden.

2

Ohne genau zu wissen, wie Fog Creek dies bewerkstelligt, ist die Art, wie ich es tun würde, eine Tabellenüberschrift auszugeben, dann durch die Liste iterieren, eine Fußzeile und eine neue Kopfzeile jedes Mal ausgeben, wenn der Gruppenwert geändert.

0

Ich weiß nicht, ob es relevant ist, aber wir speichern die Ergebnisse einer Abfrage in einer temporären Tabelle in SQL, und verweisen dann aktuelle Zeile-less-one, um zu sehen, ob eine Kategorie geändert wurde, und dies anzugeben im resulset.

In einigen Fällen wir „zeigen“ dies mit einer Spalte

<tr><td colspan=999>Category Heading</td></tr> 

, so dass die Web-Seite kann es baut gerade „injizieren“, die in der Tabelle enthalten.

SELECT Col1, Col2, ..., 
     [CATEGORY] = CASE WHEN T1.CategoryCol <> COALESCE(T2.CategoryCol, '') 
      THEN '<tr><td colspan=999>' + T1.CategoryCol + '</td></tr>' 
      ELSE '' 
      END 
FROM #MyTempTable AS T1 
    LEFT OUTER JOIN #MyTempTable AS T2 
     ON T2.ID = T1.ID - 1 
Verwandte Themen