Artikel - Detailansicht

Icon Aktuelles Dynamische Select Box 3.Fach

Sollten so wie beim Beispiel Dynamische Listboxen mit WDDX auch noch die Klasse der einzelne Autotypen abhängig ausgewählt werden, so braucht man eine 3-fach verschachtelte SelectBox.

Die Daten würden dann so in der Datenbank stehen:

Herst Type Klasse
Fiat Uno Benzin
Fiat Uno Diesel
Fiat Puno 70 PS
Opel Vectra 2l Diesel
Opel Vectra 1.8 l Turbo
Opel Kadett C
Opel Kadett D
VW Golf Cabrio
VW Golf Combi
VW Passat TDI
VW Passat TDI-Allrad
VW Lupo 1.3 Liter

Um das ganze zu realisieren müssen die Daten in ein dreidimensionales Array eingelesen werden. Dieses Array läßt sich folgendermaßen darstellen, Die Werte hinter den Bezeichnungen geben die Position innerhalb des Arrays wieder:

// +-------- ZeilenIndex (RI)
// |
// |0 1 2 3 -------- SpaltenIndex (CI)
// |
// ### 1. Ebene 0 TI=0
// 0 Fiat 0,0,0 Uno 0,0,1 Benzin 0,0,2 Diesel 0,0,3
// 1 Fiat 0,1,0 Punto 0,1,1 70 PS 0,1,2
// ### 1. Ebene 1 TI=1
// 0 Opel 1,0,0 Vectra 1,0,1 2l Diesel 1,0,2 1.8l Turbo 1,0,3
// 1 Opel 1,1,0 Kadett 1,1,1 C 1,1,2 D 1,1,3
// ### 1. Ebene 2 TI=2
// 0 VW 2,0,0 Golf 2,0,1 Cabrio 2,0,2 Combi 2,0,3
// 1 VW 2,1,0 Passat 2,1,1 TDI 2,1,2 TDI-Allrad 2,1,3
// 2 VW 2,2,0 Lupo 2,2,1 1.3 Liter 2,2,2

Ein 3-Dimensionales Array kann mann sich als mehrere 2 Dimensionale Arrays vorstellen.
Jede "Ebene" enthält ein 2-Dimensionales Array, diese Ebenen werden mit den Tabellenindex (TI) gezählt. Innerhalb jeder Ebene gibt es ein 2-Dimensionales Array mit den Spalten und den dazugehörigen ColumIndex (CI).
Hier steht in der ersten Spalte der Hersteller und in der zweiten Spalte die Type. In den weiteren Spalten stehen die Einträge der einzelnen Klassen. Zugriff auf die Spalten mittels des SpaltenIndex/ColumIndex (CI).

Für jede Zeile muß ein neues Array (Object) mit new erzeugt werden, in welchen dann die einzelnen Klassenwerte gespeichert werden.
Wenn mann sich das alles einmal vorstellen kann, ist der Rest nur meher reine Programmierarbeit. -:)

Der Code besteht aus 4 Teilen:

  1. Im ersten Teil wird die mit dem WDDX Befehlt erzeugten Daten in das Dreidimensionale Array drei_ar eingelesen.
  2. Dann gibt es die Funktion init(). Hier werden die Selectboxen mit den ersten Wert gefüllt. Es wird immer der Wert aus der ersten Zeile und ersten Spalte jeder Ebene dafür verwendet. (0,0,0 - 1,0,0 - 2,0,0)
  3. Die Funktion hersteller_onChange wird ausgeführt, wenn in der 1. selectbox ein Wert ausgewählt wird. Zuerst wird der Index (TabellenIndex (TI) des ausgewählten Eintrags ermittelt. Dieser wird dann als Index für die Entsprechende "Ebene" verwendet um die 2. und 3. Selectbox zu füllen.
    Es wird der Wert aus der zweiten Spalte der ausgewählten Ebene verwendet. (ti,0,0 - ti,1,0 - ti,2,0)
  4. Die Funktion type_onChange wird ausgeführt wenn eine Type ausgewählt wird.
    Hier muß zuerst der Index des ausgewählten Wertes der ersten Selectbox ermittelt werden (TI), dann der Index des ausgewählten Wertes der 2. Selectbox (RowIndex RI). Diese beiden Werte (TI, RI) werden dann als Index zum füllen der 3. Selectbox verwendet.(ColumIndex CI) Hier werden nun die Werte ab der 3. Spalte in der ausgewählten Zeile verwendet. (ti,ri,2 - ti,ri,3 )
Die 3. Selectbox benötigt keinen Eventhandler mehr, es muß ja nichts mehr getan werden.

Die Absenden der Formulardaten kann sich dann jeder nach seinen Bedürfnissen anpassen.
Das Template mit einer Beispieldatenbank steht als Download zur Verfügung.



Schoitsch Werner WERNER.SCHOITSCH@TK.OEBB.AT - 07.11.2000


Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen