» Start & Installation » ASP-Grundlagen » VBScript » Datenbanken » Erweiterte Techniken » Fehlercode-Suche » FAQ » Forum für aspfehlercodes » ASP » JavaScript » ASCII & ANSI » HTTP-Statuscodes » Codepage » LCID » VBScript » JScript
|
Link: Wichtiger Hinweis in eigener Sache!
| Autor: Klaus Keller | Erstellt am: 2005-02-10 | Aufrufe: 8383 |
Tipp 74: Gewünschtes Dropdown-Element anzeigen
Wie zeigt man ein gewünschtes Element in einem Dropdown dar? Natürlich durch die Angabe selected. Wie wird das gewünschte Element in ASP ausgewählt? Natürlich auch durch selected. Wie wird aber das gewünschte Element identifiziert? Das ist per If-Abfrage möglich. Das kann z.B. so mit einer Datenbankschleife aussehen:
<select id="FarbID" name="FarbID"> <% do while not rs.eof Response.Write("<option value=""" & rs.fields("FarbID").value & _ """") if FarbID = rs.fields("FarbID").value then Response.Write(" selected=""selected""") end if Response.Write(">" & rs.fields("FarbName").value & _ "</option>") rs.moveNext Loop %> </select> |
Wie Sie sehen, muß eine If-Abfrage eingesetzt werden, um das richtige Element zu selektieren. Allerdings geht das auch einfacher, dazu eine Funktion aufrufen, dieser übergeben Sie die beiden Werte wie oben in der If-Abfrage, also die Variable FarbID und der Wert aus dem Recordset. Stimmen beide Werte überein, gibt die Funktion die gewünschte HTML-Anweisung "selected" zurück. Den ganzen Quellcode von oben mit der Funktion:
<select id="FarbID" name="FarbID"> <% do while not rs.eof Response.Write("<option value=""" & rs.fields("FarbID").value & _ """" & GetSelected(FarbID, rs.fields("FarbID").value) & _ ">" & rs.fields("FarbName").value & _ "</option>") rs.moveNext Loop %> </select> |
Vorteil: Einfacher, übersichtlicher. Nun aber die Funktion, welche das ganze prüft:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| Public Function GetSelected(ByRef arrValue, ByRef strCheckValue) '================================================================================== 'Name, Version und Autor 'GetSelected <-> Version 0.3, letzte Änderung am 2005-02-12 'Klaus Keller, http://www.asphelper.de '---------------------------------------------------------------------------------- 'Beschreibung: 'Prüft, ob zwei Werte übereinstimmen. Falls wird, wird selected="selected" 'zurückgegeben. Bei Select-Felder (Dropdown) kann damit geprüft werden, ob das 'aktuelle Feld als ausgesucht angezeigt werden soll. Wenn der Parameter arrValue 'ein Array ist, dann wird in einer Schleife jedes Array-Element mit strCheckValue 'verglichen '---------------------------------------------------------------------------------- 'Parametername Datentyp Verwendung 'arrValue String Feldname, der mit dem zweiten Paramter verglichen wird. ' Übergeben werden kann sowohl ein String wie auch ein ' Array 'strCheckValue String Feldname, der mit dem ersten Paramter verglichen wird. '---------------------------------------------------------------------------------- 'Rückgabewert 'Datentyp: String 'Falls arrValue und strCheckValue übereinstimmen, wird selected="selected" 'zurückgegeben. '---------------------------------------------------------------------------------- 'Copyright ©2001-2005 Klaus Keller 'Dieses Skript ist ein Computerprogramm das lt. §69UrhG Urheberrechtlichen Schutz 'geniesst und darf nicht als eigenes Programm ausgegeben werden. Das Anbieten 'zum Download bedarf der Zustimmung. Alle Skripte wurden mit grösstmöglicher Sorgfalt 'entwickelt, sollten dennoch Fehler enthalten sein, wird keine Haftung übernommen, 'weder für direkt noch indirekt entstehende Schäden. ' 'Klaus Keller 'http://asphelper.de '==================================================================================== dim index if isarray(arrValue) then For index = 0 to UBound(arrValue) If LCase(strCheckValue) = LCase(arrValue(index)) Then GetSelected = " selected=""selected""" End If next else If LCase(strCheckValue) = LCase(arrValue) Then GetSelected = " selected=""selected""" End If end if End Function |
Wenn Sie sich die Funktion genau ansehen, wird Ihnen in der Zeile 36 vielleicht noch folgendes auffallen isarray(arrValue). Wozu denn das? Einmal angenommen, Sie möchten dem Besucher die Möglichkeit bieten, daß dieser nicht nur ein Element aus dem Dropdown auswählen kann sondern gleich mehrere. Was dann?
Denn bei einer Mehrauswahl werden gleich mehrere Werte übergeben. Wenn man jetzt wie oben die Variable FarbID mit der ID aus dem Recordset vergleicht, wird bei einer Mehrfachen Auswahl nie ein Selected geschrieben. Noch einmal den Quellcode von oben, diesmal allerdings mit der Möglichkeit einer Mehrauswahl:
<select id="FarbID" name="FarbID" multiple> <% do while not rs.eof Response.Write("<option value=""" & rs.fields("FarbID").value & _ """" & GetSelected(FarbID, rs.fields("FarbID").value) & _ ">" & rs.fields("FarbName").value & _ "</option>") rs.moveNext Loop %> </select> |
Wenn der Besucher 3 Werte auswählt, erhalten Sie beim Auslesen aus dem Request ein String, der die FarbIDs durch Kommas und einem Leerzeichen trennt, z.B. so:
FarbID = Request.Form("FarbID") Response.Write(FarbID) |
So könnte die Ausgabe aussehen:
Und wie wird jetzt das gewünschte selected je Element angezeigt? Ohne die Funktion GetSelected brauchen Sie in der Do While-Schleife eine neue Schleife. Und das klingt nicht nur aufwendig, es ist aufwendig und macht den Quellcode unübersichtlich. Und genau hier tritt wieder die Funktion GetSelected in Erscheinung. Eine Prozedur wie z.B. eine Function wird dann beispielsweise verwendet, wenn man eine bestimmte Aufgabe an mehreren Stellen benötigt. GetSelected kann man an unterschiedlichen Stellen aufrufen, die Verwendung macht den Quellcode übersichtlicher und effektiver. Aber wie läuft das mit mehreren ausgewählten Elementen? Um mehrere Werte in der Funktion mit dem einen Wert zu prüfen, müssen die Werte (hier 1, 2, 3) in ein Array geschrieben werden, aber wie läuft das? Ganz einfach so:
<select id="FarbID" name="FarbID" multiple> <% do while not rs.eof Response.Write("<option value=""" & rs.fields("FarbID").value & _ """" & GetSelected(FarbID, Split(rs.fields("FarbID").value, ", ") & _ ">" & rs.fields("FarbName").value & _ "</option>") rs.moveNext Loop %> </select> |
Wie Sie sehen können, wird hier die Funktion "Split" eingesetzt, damit wird ein String zu einem Array überführt. Die einzelnen Array-Elemente werden durch ein Trennzeichen ermittelt, in dem vorliegenden Fall ist es ein Komma und ein Leerzeichen.
|
|