webForumDet fria alternativet

List meny som ändras automatiskt

1 svar · 189 visningar · startad av erka

erkaMedlem sedan dec. 19996 522 inlägg
#1

Hej!

Jag har sökt igenom forumet och pillat lite men inte hittar eller lyckats få det att fungera som jag vill.

Problemet
Jag har först en lista med länder som hämtas ur en databas och visas i en listmeny. Vissa av dessa länder har även stater som man ska kunna välja på så att om man väljer tex USA ska en lista med deras stater komma upp (som jag också har i databasen). Detta ska bara komma upp om man väljer England, Australien, Canada eller USA. Annars ska inte denna andra listmeny visas. Det är ju olika stater för de olika länderna som ska hämtas så jag måste göra det med fem olika möjligheter.

1.Hämta ingen lista om inte det är USA, canada, england eller australien som valts
2-5 Lista valt lands stater från databasen i en listmeny.

Jag har löst att när man väljer land så skickar han till en funktion som kollar efter 4 värden ifall det är något så visar han sidan med en querystring och det land man valts stater.

funktionen är

<script>
function visastat(){
if(document.AddDistributor.IntCountryId.selectedIndex==223){location.href="Default.asp?ShowStates=US"} 
if(document.AddDistributor.IntCountryId.selectedIndex==12){location.href="Default.asp?ShowStates=AU"}
if(document.AddDistributor.IntCountryId.selectedIndex==99){location.href="Default.asp?ShowStates=CA"}
if(document.AddDistributor.IntCountryId.selectedIndex==194){location.href="Default.asp?ShowStates=GB"}
if(parent.location.search!=""){location.href="default.asp"}
}
</script>

och hur jag visar staterna är

<% 
If Request.Querystring("ShowStates") = "US" Then 
	strSQL = "SELECT CountryName_ID, StateId, StateName, StateCode "_
			&"FROM dbo.CountryStates Where CountryName_ID = "& 224 &""
	arrRS = CN.Execute(strSQL).GetRows()
%>
          <tr> 
            <td valign="top" width="21%" class="text"> 
              <div align="right">State </div>
            </td>
            <td width="79%"> 
              <select name="IntStateId" class="liststyle">
<%
For i = 0 To Ubound(arrRS,2)
			Response.Write "<option value='" & arrRS(1,i) & "'>" & arrRS(2,i) & "(&nbsp;"& arrRS(3,i) &")</option>"
Next 
Erase ArrRs
%>				
              </select>
            </td>
          </tr>
<% ElseIf Request.Querystring("ShowStates") = "AU" Then  
	strSQL = "SELECT CountryName_ID, StateId, StateName, StateCode "_
			&"FROM dbo.CountryStates Where CountryName_ID = "& 13 &""
	arrRS = CN.Execute(strSQL).GetRows()
	%>
 <tr> 
            <td valign="top" width="21%" class="text"> 
              <div align="right">State </div>
            </td>
            <td width="79%"> 
              <select name="IntStateId" class="liststyle">
<%
For i = 0 To Ubound(arrRS,2)
			Response.Write "<option value='" & arrRS(1,i) & "'>" & arrRS(2,i) & "(&nbsp;"& arrRS(3,i) &")</option>"
Next 
Erase ArrRs
%>				
              </select>
            </td>
          </tr>

osv. tills alla fyra länderna är genomkörda. Problemet jag har märkt är att om man fyller i formulären och väljer ett land med stater så laddas sidan om och det som fanns inskrivet i formulären försvinner, jag skulle kunna lösa detta genom att lägga land valet överst men det vill jag helst undvika då det är bättre att lägga det längre ner på sidan. Någon som har några förslag, ska jag skrota detta helt eller går det att lösa med denna lösning eller någon annan.

mycket mycket tacksam

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Ett alternativ är att istället för att i den första delen (där du väljer land) använda location.href för att ladda om sidan så sätter du istället ett värde i ett hidden-fält och submitar sidan sidan (ändra action till Default.asp om det behövs med document.AddDistributor.action="Default.asp"). Sedan kan du m.h.a. ASP titta om hiddenfältet är satt när sidan laddas och i så fall lägga till select-listan med stater.

--- Tillägg ---

Då eftersom sidan är skickad med ev. data så kan du använda det för att stoppa in det i rätt fält i resten av formuläret.

------------------
/ J

[Redigerat av Jojoxx den 01 feb 2002]

139 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)