Jesper T skrev:
Ehhh....
"<li>" & objRubrik(2) & "</li>"Kan ju knappast bli :
<li>Games <ul>
Läs min redigering.
30 svar · 1 310 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 hela trådstarten →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 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å
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.
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