Jesper T skrev:
Ehhh....
"<li>" & objRubrik(2) & "</li>"Kan ju knappast bli :
<li>Games <ul>;)
Läs min redigering. ;)
30 svar · 1 278 visningar · startad av Jesper T · sida 2 av 2
Försöker att skapa en "ul och li"-lista, men mina hjärnceller står still. Skulle det inte gå att utgå ifråd detta må någe vis? Sub LinkTree(intParent,intIndent) : Dim X,Z For X = 0 To Ubound(arrLinks,2) If arrLinks(1,X) = intParent then IF intIndent < 0 then Response.Write "<li>"& arrLinks(2,X) &"</ul>"& VbCrlf ELSE For Z = 1 To intIndent Response.Write
Läs frågan i sin helhet →Jesper T skrev:
Ehhh....
"<li>" & objRubrik(2) & "</li>"Kan ju knappast bli :
<li>Games <ul>;)
Läs min redigering. ;)
Jag labbar lite.
PrintTree objNode(0, intDepth + 1)
Skall väl vara
PrintTree objNode(0), intDepth + 1
Precis... jag såg den tabben själv :r och ändrade den...
Operation is not allowed when the object is open.
/menu/Default.asp, line 22
-->objChild.Open strSQL, objConn
Nu stör jag igen. ;)
Om det nu är så att Engine^s kod inte funkar så tror jag nog att det här är som du vill ha det:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db.mdb")
intSpace = 0
Sub PrintTree(intParent)
strSQL = "SELECT nodeId, nodeParent, nodeText FROM tblNodes WHERE nodeParent = " & intParent
Set objRubrik = objConn.Execute(strSQL)
Response.Write(Space(intSpace * 2) & "<ul>" & vbCrLf)
intSpace = intSpace + 1
Do Until objRubrik.EOF
strSQL = "SELECT nodeParent FROM tblNodes WHERE nodeParent = " & objRubrik(0)
Set objNode = objConn.Execute(strSQL)
If NOT objNode.EOF Then
Response.Write(Space(intSpace * 2) & "<li class=""toggle"">" & objRubrik(2) & vbCrLf)
intSpace = intSpace + 1
PrintTree objNode(0)
Else
Response.Write(Space(intSpace * 2) & "<li>" & objRubrik(2) & "</li>" & vbCrLf)
End If
objNode.Close : Set objNode = Nothing
objRubrik.MoveNext
Loop
objRubrik.Close : Set objRubrik = Nothing
intSpace = intSpace - 1
If intSpace = 0 Then
Response.Write("</ul>" & vbCrLf)
Else
Response.Write(Space(intSpace * 2) & "</ul>" & vbCrLf & Space((intSpace - 1) * 2) & "</li>" & vbCrLf)
intSpace = intSpace - 1
End If
End Sub
PrintTree 0
objConn.Close : Set objConn = Nothing
%>
Det tråkiga med att inte kunna testa koden är ju att det dyker upp sådana där småsaker då och då :l
Fungerar inte Sebbes variant kommer en till av min här :)
Sub PrintTree(intParent, intDepth)
Dim objNode, objChild
strSQL = "SELECT intNode, strNamn FROM tblTree WHERE intParent = " & intParent
Set objNode = Server.CreateObject("ADODB.Recordset")
Set objChild = Server.CreateObject("ADODB.Recordset")
objNode.Open strSQL, objConn
While Not objNode.EOF
strSQL = "SELECT 1 FROM tblTree WHERE intParent = " & objNode(0)
[b]If objChild.State = 1 Then objChild.Close[/b]
objChild.Open strSQL, objConn
If objChild.EOF Then
Response.Write Space(intDepth * 4) & "<li>" & objNode(1) & "</li>"
Else
Response.Write "<li>" & Space(intDepth * 4) & "<ul>" & objNode(1)
PrintTree objNode(0), intDepth + 1
Response.Write "</ul></li>"
End If
objNode.MoveNext
Wend
Set objChild = Nothing
objNode.Close : Set objNode = Nothing
objConn.Close : Set objConn = Nothing
End Sub
Reponse.Write "<ul>"
PrintTree 0, 0
Response.Write "</ul>"
Ha ha,, här var det tävling!
Sebbe vann, fast Engine^, du gjorde ett bra jobb!
Tack vänner!
Weee! Vassego. :D ;)
Visst, nu är jag sent ute, men jag fick hjälp av det här, så jag tar och kommenterar...
Jag lägger min röst på Engine^s version då Sebbes producerar en "</li>" tag efter att listan genererats färdigt. Kan dock bero på att jag implementerat helt galet.
Sebbe, din lösning gav mig dock inspiration till annat :)