2009-02-26 8 views
2

Ich schreibe ein CMS für verschiedene Formulare und so, und ich finde, ich erstelle eine Menge von Dropdown-Menüs. Ich habe nicht das Gefühl, meine Datenbank mit tonnenweise zufälligen Schlüssel/String-Wertetabellen für einfache Drop-Downs mit 2-4 Optionen, die sich sehr selten ändern, zu vermischen. Was tun Sie, um dies verantwortungsvoll zu bewältigen?Halten von Drop-Downs DRY in einer Web-App

Das ist sprachunabhängig, aber ich arbeite in Rails, wenn jemand spezielle Ratschläge hat.

Antwort

4

Wir haben alles in eine einzelne LookUp-Tabelle in der Datenbank geschrieben, mit einer Spalte, die einer Aufzählung zugeordnet wurde, die beschreibt, für welche Suche sie gedacht war (Titel, Land usw.).

Dadurch konnten wir die Flexibilität einer Option "Andere, bitte spezifizieren" in den Dropdown-Listen für Nachschlagezwecke hinzufügen. Wir haben ein Steuerelement erstellt, das dies umkapselt, mit einer Eigenschaft, dieses Verhalten von Fall zu Fall ein- oder auszuschalten.

Wenn der Endbenutzer "Andere, bitte spezifizieren" ausgewählt hat, erscheint ein Textfeld, in dem sie ihren eigenen Wert eingeben können. Dies würde der Nachschlagetabelle hinzugefügt, jedoch als Ad-hoc-Element gekennzeichnet.

Die Tabelle enthielt ein Flag, das den Status jedes Suchwerts angibt: Aktiv, Inaktiv, AdHoc. Nur Aktive werden im Dropdown angezeigt. AdHocs wurden mit der Option "Andere, bitte spezifizieren" erstellt.

Eine Admin-Seite zeigte die Häufigkeit der Verwendung der AdHoc-Werte, die es den Administratoren der Site ermöglichte, gängige allgemeine Werte allgemein zu verwenden (d. H. Ihr Status-Flag auf Aktiv zu setzen).

Das mag zwar für Ihre App zu viel Aufwand sein, aber es funktionierte wirklich gut für unsere: Die App bestand im Grunde fast ausschließlich aus CRUD-Operationen mit sehr geschäftsspezifischen Daten. Wir hatten Dutzende von Suchvorgängen auf der gesamten Website, die der Kunde selbst verwalten wollte. Dies gab ihnen völlige Flexibilität ohne Intervention von uns.

+0

Ich mag diese Idee wirklich. Ich bin mir nicht sicher, ob ich etwas ganz so Kompliziertes machen werde, aber auf jeden Fall gute Denkanstöße. –

+0

Wie haben Sie sichergestellt, dass Ihre verschiedenen Drop-Downs auf die richtige Gruppe ausgerichtet waren? Hast du den Gruppenschlüssel in deinen Code programmiert? –

+0

Wir würden die Eigenschaft jedes Mal festlegen, wenn wir eine Instanz des Suchsteuerelements auf einer Seite platzieren. Das ist in ASP.net deklarativ einfach zu tun; Ich habe nicht in Ruby gearbeitet. Die Kontrolle würde schrecklich sterben, wenn wir vergessen hätten, es zu setzen, also würden wir dies sofort beim Debuggen sehen. – teedyay

3

Sie kalt eine einzige Dropdown-Tabelle mit einer zusätzlichen Spalte muss sagen, was die Drop-down für ... begrenzt die Ergebnisse mit einer where-Klausel ...

1

In meiner jetzigen Position ist, dass wir eine LookupCode Tabelle implementiert Diese enthält eine CodeGroup-, Code- und Bedeutungsspalte sowie einige andere (wie aktiv). Auf diese Weise haben Sie eine einzige Tabelle, die alle Ihre Lookup-Werte an einem einzigen Ort enthält, und Sie können einige schnelle Suchen durchführen, um an Ihre Dropdown-Listen zu binden.