Avatar billede lklingenberg Nybegynder
03. december 2002 - 15:09 Der er 4 kommentarer og
1 løsning

Flere "selected" i en rullemenu

Hej,

En stored procedure (SP) i en database genererer en række tal. I de forskellige options i en rullemenu (af multiple slagsen) er value også en række tal. Rullemenuen er genereret af samtlige poster i den tabel for nogle er trukket ud i min SP.

Jeg vil gerne have det sådan at netop de tal der kommer fra min SP bestemmer hvilke options der er selectedi rullemenuen. Jeg har tænkt på om man kunne omdanne tallene fra min SP til et array og så lade ASP-koden der generer rullemenuen løbe gennem dette array for hver option den udskriver, men jeg har ikke fundet de vise sten. Er der nogen der kan hjælpe?

/Lars
Avatar billede coltau Juniormester
03. december 2002 - 15:56 #1
Så vidt jeg husker anvender man koden selected i en rullemenu.

<option selected name=osv> ' Denne option er valgt
<option name=osv> ' Denne option er ikke valgt

Har du ikke mulighed for at angive det når du danner ruellemenuen. ?
Avatar billede kryster Nybegynder
03. december 2002 - 16:20 #2
%>
<select name="tal">
<%
  strSQL = "SELECT tal FROM TabelTal ORDER BY tal DESC"
  Set rs = Conn.Execute(strSQL)
  i = 1
  Do While Not rs.EOF
%>
  <option value="<%=i%>"<%If (i = rs("tal")) Then%> selected<% End If%>><%=i%></option>
<%
    i = i + 1
    rs.MoveNext
  Loop
%>
</select>
<%
Avatar billede lklingenberg Nybegynder
03. december 2002 - 19:01 #3
okay, det kræver vist en lidt grundigere forklaering...

Min SP henter nogle specifikke records ud af en tabel. Det kunne fx være 1,5,6,7,12

Min rullemenu dannes også ved et db-udtræk. Problemet er beskrevet i [] i koden:
<%
Dim objRSansat
Set objRSansat = Server.CreateObject("ADODB.Recordset")
   
strSQLList = "SELECT AnsatID, Fornavn, Efternavn FROM Ansatte " & _
              "ORDER BY Fornavn;"
objRSansat.Open strSQLList, objConn
   
If objRSansat.EOF = True Then
  Response.Write "<p class=""heading"">Der er ikke angivet nogen personer i databasen!</p>"
  Else
  Response.Write "<select class=inp multiple name=udvalg size=5>" 
  objRSansat.MoveFirst
  Do Until objRSansat.EOF
 
  If [her skal være en betingelse der gennemser data fra min SP hvis objRSansat("AnsatID") er lig med en af tallene fra min SP skal denne option være selcted] Then
  Response.Write "<option selected value=""" & objRSansat("AnsatID").Value & """>" & objRSansat("Fornavn").Value & " " & objRSansat("Efternavn").Value & ", " & objRSansat("AnsatID").Value & "</option>" & vbCrLf
  Else
  Response.Write "<option value=""" & objRSansat("AnsatID").Value & """>" & objRSansat("Fornavn").Value & " " & objRSansat("Efternavn").Value & ", " & objRSansat("AnsatID").Value & "</option>" & vbCrLf
  End If
   
  objRSansat.MoveNext
  Loop
  Response.Write "</select>"
End If
   
objRSansat.close
Set strSQL = Nothing
Set objRSansat = Nothing
%>
Avatar billede lklingenberg Nybegynder
03. december 2002 - 19:44 #4
Jeg har fundet en løsning der virker. MEN jeg har været nødt til at angive antallet af værdier i mit array "manuelt" (se første kodelinje). Antallet af værdier er dynamisk, så jeg skal have fundet en måde hvorpå jeg kan finde antallet af records og overfør denne værdi til ArrayID(). Hm....

<%
Dim objRSmedl, adCmdStoredProcMedl, i, ArrayID(6)
Set objCmd = Server.CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = objConn
adCmdStoredProcMedl = 4
objCmd.CommandText = "procUdvalg" & Session("Udvalg")
objCmd.CommandType = adCmdStoredProcMedl
Set objRSmedl = Server.CreateObject("ADODB.Recordset")
Set objRSmedl = objCmd.Execute

If objRSmedl.EOF Then
  Response.Redirect "Show.asp"
  Else
  i = 0
  objRSmedl.MoveFirst
  Do Until objRSmedl.EOF
  ArrayID(i) = objRSmedl("AnsatID").Value
  i = i + 1
  objRSmedl.MoveNext
  Loop
End If
objRSmedl.Close
Set objRSmedl = Nothing
For i = LBound(ArrayID) To UBound(ArrayID)
  Response.Write "ArrayID("& i &") = "& ArrayID(i) & "<br>"
Next
%>
<br>
<%
Dim objRSansat
Set objRSansat = Server.CreateObject("ADODB.Recordset")
   
strSQLList = "SELECT AnsatID, Fornavn, Efternavn FROM Ansatte " & _
    "ORDER BY Fornavn;"
objRSansat.Open strSQLList, objConn
   
If objRSansat.EOF = True Then
  Response.Write "<p class=""heading"">Der er ikke angivet nogen personer i databasen!</p>"
  Else
  Response.Write "<select class=inp multiple name=udvalg size=5>" 
  objRSansat.MoveFirst
  Do Until objRSansat.EOF
 
  Response.Write "<option "
  For i = LBound(ArrayID) To UBound(ArrayID)
  If ArrayID(i) = objRSansat("AnsatID").Value Then Response.Write "selected"
  Next
  Response.Write " value=""" & objRSansat("AnsatID").Value & """>" & objRSansat("Fornavn").Value & " " & objRSansat("Efternavn").Value & ", " & objRSansat("AnsatID").Value & "</option>" & vbCrLf
     
  objRSansat.MoveNext
  Loop
  Response.Write "</select>"
End If
   
objRSansat.close
Set strSQL = Nothing
Set objRSansat = Nothing
%>
Avatar billede lklingenberg Nybegynder
08. juli 2003 - 20:09 #5
Lukning af spm.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester