12. november 2004 - 14:37Der 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>
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 ...
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...
<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
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
<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
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
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.