Dynamische Auswahllisten mit VBscript ???
Alexander Fosticz
- asp.net
0 Beldin0 A.Fosticz0 Stefan Falz0 Fossi
Hallo erstmal !
Ich hoffe jemand von euch kann mir bei einem Problem helfen.
Ich habe ein Suchformular mit mehreren Auswahllisten (<form
action="dbsuche1.asp" method="POST" name="suchformular">)
Das Suchformular wird dann in einer Asp-Datei per VBScript ausgewertet und fragt die Datenbank ab.
Nun möchte ich aber, daß erst die Werte einer Auswahlliste abhängig von der Auswahl einer anderen Auswahliste mit Daten aus einer Datenbank aktualisiert wird.
Z.B Auswahlliste 1: (Abhängiger Wert)
<select name="automarke" size="1" onchange="Modellauswahl()">
<option value="0">Alle...</option>
<option value="3">ASTON MARTIN</option>
...
</select></td>
und Auswahlliste 2: (Zu erweiternde Auswahlliste mit Datenbankwerten)
<select name="model" size="1">
<option value="0">Alle...</option>
</select></td>
Gruß Fossi
Hi
das geht in der Form nur durch ein neues reload der Seite , da der ASP
ja Serverseitig läuft , und wenn die Seite geladen ist hat der Server
erstmal seine Arbeit getan und wird halt erst wieder aktiv wenn die
Seite neu geladen wird.
Du müsstest die seite also über das onchange neu laden und in dann
entsprechend via request.form("automarke") eine neue Abfrage für die
zweite Selectbox basteln.
gruss
Beldin
Hi erst mal danke für die Antwort.
Aber das eigentliche Problem ist wie spreche ich die einzelnen Formularelemente mit VBScript an.
Mit Javascript eine neue Option hinzufügen z.B
function Modellauswahl()
{
NeuerEintrag = new Option(document.forms["suchformular"].Áutomarke[1].value); ***(Beispieldaten)***
document.forms["suchformular"].model.options[document["suchformular"].model.length] = NeuerEintrag;
}
Jetzt könnte ich mit einer Schleife natürlich mehrere hinzufügen.
Aber da ich unter Javascript keine Datenbankabfragen(Access) machen kann oder nicht weiß wie komm ich nicht weiter.
Also entweder wäre es gut zu wissen ob unter VBScript auch mit z.B
document.forms["Suchformular"] das betreffende Formular-Objekt angesprochen werden kann oder ich müßte wissen wie und ob man unter JavaScript Datenbankabfragen machen kann, oder ob man beides so kombinieren kann daß ich die Daten mit VBScript aus der Datenbank auslesen kann und dann diese Daten mit Javascript und seinen Forms-Objekten weiterbearbeiten kann.
Für schnelle und umfangreiche Hilfe wäre ich sehr dankbar.
Gruss Fossi
Hallo,
willst Du clientseitig oder serverseitig die Liste neu aufbauen.
Clientseitig: Sobald jemand Liste A ändert, werden die Änderungen ohne Neuladen der Seite dynamisch aus einer DB gezogen
Serverseitig: Sobald jemand Liste A ändert, wird die Seite neu geladen und Liste B gefüllt.
Für die 2. Möglichkeit hätte ich eine Lösung:
<%
<form ... action="seite.asp" method="POST">
<select name="A_ID" size="1" onChange="document.forms[0].submit();">
<option value="1">Erster
<option value="2">Zweiter
<option value="x">...
</select>
<select name="B_ID" size="1" onChange="document.forms[0].submit();">
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN","UID","PWD"
SQL = "SELECT ID, Name FROM Tabelle WHERE ParentID = " & Request("A_ID")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, conn, 3, 3
If Not rs.EOF Then
Do While Not rs.EOF
Response.Write "<option value = """ & rs.Fields("ID") & """>" & rs.Fields("Name")
rs.MoveNext
Loop
End if
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>
</select>
</form>
Ich hoffe, dass ich mich nicht verschrieben habe.
Tschau, Stefan
Hallo Stefan
Danke erst mal für den Lösungsansatz.
Also erstmal muß ich sagen daß ich noch nicht lange mit ASP zu tun habe. Wenn ich das richtige sehe liegt der Code für die Verarbeitung der Abfrage bei dir im Suchformular also Clientseitig, oder ?
Mein Problem ist eigentlich daß ich nicht weiß wie der Ablauf sich abspielt.
Du schreibst Auswahlfeld1 - onChange="document.forms[0].submit();
Dabei werden doch alle Daten des Formulars an seite.asp übergeben, oder?
Bei mir werden Die Daten aus "Suchformular" an "dbsuche.asp" per post übergeben.
Aber wenn ich Daten an "dbsuche.asp" übergebe wird daraus eine Tabelle mit den Gefundenen Datensätzen erstellt und an den Client geschickt.
Also wie kann ich "dbsuche.asp" begreiflich machen daß
wenn das 1.Auswahlfeld geändert wurde nicht die Abfrage zur eigentlichen suche der Daten gemeint ist sondern ersteinaml die Daten aus der Datenbank herausgesucht werden sollen und diese dann in das Formular eingefügt werden sollen.
Ein zweiter Punkt dabei ist noch daß "dbsuche.asp" eine neu Seite erstellt und nicht das Suchformular erweitert.
Weiterhin sollte im Suchformular kein Code stehen der Rückschlüsse auf irgendwelche Strukturen gibt.
Und woher weiß das Skript in deiner Lösung wo die neuen Optionen hingehören die du in der schleife mit Response.write "<option value..." erstellst.
In Javascript kann ich ja mit Hilfe von einer Funktion z.B
function Modellauswahl()
{
NeuerEintrag = new Option(document.forms["suchformular"].Formularfeld.value); (oder irgendwelche Werte)
document.forms["suchformular"].Formularfeld.options[document["suchformular"].Formularfeld1.length] = NeuerEintrag;
}
neue Optionen hinzufügen.
Kann ich mit VBscript was ich hauptsächlich benutze auch mit diesen document.forms etc.. arbeiten ?
Und noch eine letzte Frage, kann ich Variablen die ich mit Vbscript gefüllt habe mit Javascript weiterverarbeiten ?
So daß waren jetzt viele Dinge auf einmal. Ich hoffe du hast die Zeit und die Lust mir darauf zu antworten
Schon mal im voraus Danke
Gruß Fossi