Avatar billede hehlers Nybegynder
12. november 2004 - 14:37 Der er 5 kommentarer og
1 løsning

Liste af mapper i dropdown skal være alfabetiske

Hejsa

Jeg har en dropdownliste som viser en række mapper.
De kommer dog bare ud hulter til bulter. :)  Jeg vil dog gerne have at de kommer ud i alfabetisk orden.
Her er koden, som det ser ud nu...
--------------------------------
<FORM METHOD=POST name="filreg" ACTION="filreg.asp"><select size="1" name="D1">
<%
Dim strPath
'Dim objFSO
Dim objFolder
Dim objItem

strPath = "/Billedmateriale/"

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))

%>
<option value="">Vælg mappe</option>
<option value="">Alle mapper</option>
<%
For Each objItem In objFolder.SubFolders
    'If InStr(1, objItem, "_vti,billeddatabase", 1) = 0 Then
   
strforbudtFolders2 = "_vti,billeddatabase" ''& Request("xxx")
If NOT InStr(1, strforbudtFolders2, objItem.Name, vbTextCompare) > 0 Then   
   
%>
<% Response.write "<option>" & objItem.Name & "</option>" %>
    <%
    End If
Next
For Each objItem In objFolder.Files

Next

Set objItem = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
%>
</select>
Avatar billede ldanielsen Nybegynder
12. november 2004 - 14:56 #1
Du er nødt til at hente dem ud i et array, og så sortere det. Der er desværre ikke nogen let måde at sortere et array i VBScript, men jeg kan da finde ud af noget ...
Avatar billede hehlers Nybegynder
12. november 2004 - 15:00 #2
Uha, jeg er ikke nogen programmeringshaj, så jeg får nok et lille problem med det...  SKulle vist have afsat lidt flere point så. - Troede det var meget enkelt...
Avatar billede ldanielsen Nybegynder
12. november 2004 - 15:23 #3
Prøv lige om dette virker :

<FORM METHOD=POST name="filreg" ACTION="filreg.asp"><select size="1" name="D1">
<%
Dim strPath
'Dim objFSO
Dim objFolder
Dim objItem

strPath = "/Billedmateriale/"

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
Set objSubfolders = objFolder.SubFolders

Redim ArrFoldersTemp(objSubfolders.Count)
strforbudtFolders2 = "_vti,billeddatabase"

i = 0
for each f in objSubfolders
  ArrFoldersTemp(i) =  f.name
  i = i + 1
next

Set objSubfolders = nothing
Set objFolder = nothing
Set objFSO = nothing

ArrFolders = sortArray(ArrFoldersTemp)

%>
<option value="">Vælg mappe</option>
<option value="">Alle mapper</option>
<%
For i = 0 to Ubound(ArrFolders) 
  If NOT InStr(1, strforbudtFolders2, ArrFolders(i), vbTextCompare) > 0 Then   
    Response.write "<option>" & ArrFolders(i) & "</option>" %>
  End If
Next

%>
</select>

<%
function sortArray(arrIn)
  for n = 0 to Ubound(arrIn)
    for i = 0 to Ubound(arrIn) - 1
      thisVal = arrIn(i)
      nextVal = arrIn(i + 1)
      if thisVal > nextVal then
        arrIn(i) = nextVal
        arrIn(i + 1) = thisVal
        i = i - 1
      end if
    next
  next
  sortArray = arrIn
end Function

%>
Avatar billede ldanielsen Nybegynder
12. november 2004 - 15:26 #4
Så er den testet

<FORM METHOD=POST name="filreg" ACTION="filreg.asp"><select size="1" name="D1">
<%
Dim strPath
Dim objFSO
Dim objFolder
Dim objSubfolders

strPath = "/Billedmateriale/"

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
Set objSubfolders = objFolder.SubFolders

Redim ArrFoldersTemp(objSubfolders.Count)
strforbudtFolders2 = "_vti,billeddatabase"

i = 0
for each f in objSubfolders
  ArrFoldersTemp(i) =  f.name
  i = i + 1
next

Set objSubfolders = nothing
Set objFolder = nothing
Set objFSO = nothing

ArrFolders = sortArray(ArrFoldersTemp)

%>
<option value="">Vælg mappe</option>
<option value="">Alle mapper</option>
<%
For i = 0 to Ubound(ArrFolders) 
  If NOT InStr(1, strforbudtFolders2, ArrFolders(i), vbTextCompare) > 0 Then   
    Response.write "<option>" & ArrFolders(i) & "</option>"
  End If
Next

%>
</select>

<%
function sortArray(arrIn)
  for n = 0 to Ubound(arrIn)
    for i = 0 to Ubound(arrIn) - 1
      thisVal = arrIn(i)
      nextVal = arrIn(i + 1)
      if thisVal > nextVal then
        arrIn(i) = nextVal
        arrIn(i + 1) = thisVal
        i = i - 1
      end if
    next
  next
  sortArray = arrIn
end Function

%>

Jeg vil lige sige at min sorteringsfunktion ikke er særlig genial, hvis du giver den meget store arrays vil et tage MEGET lang tid
Avatar billede hehlers Nybegynder
19. november 2004 - 11:32 #5
tusind tak danielsen. svarer du lige?
Avatar billede ldanielsen Nybegynder
19. november 2004 - 11:40 #6
Ja, værsgo!
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