Es ist in der Tat ein Kopfschmerz, durch unendliche Klassifizierungsniveaus zu schleifen.
Zum Beispiel müssen wir eine ausgewählte oder eine Tabelle aussuchen und viele Urteile schreiben.
Gibt es einen besseren Weg?
Mein Ansatz ist es, ein Array zu generieren. Sie können es wiederholt aufrufen und das Array einfach direkt schleifen.
Zur Bequemlichkeit habe ich es in eine Klasse geschrieben.
class.asp
Gibt eine Reihe aller Kategorien und Sorten in der Reihenfolge zurück
Es gibt 4 Attribute:
Kopieren Sie den Code wie folgt: setaa = newClassList
aa.id = "id" // nummernname
aa.classname = "className" // Klassifizierungsname
aa.pid = "pid" // übergeordnete ID -Name
aa.db_name = "class" // Tabellenname
list = aa.arrylist ()
Kopieren Sie den Code wie folgt: <%
Klassenklassenliste
privatec_id
privatec_db_name
privatec_pid
privatec_className
PublicPropertyletid (STR)
c_id = str
Endproperschaft
publicPropertyletdb_name (str)
c_db_name = str
Endproperschaft
PublicPropertyletpid (STR)
c_pid = str
Endproperschaft
PublicPropertyletClassName (STR)
c_classname = str
Endproperschaft
Dimlist ()
Dimi, n
PrivateSubclass_initialize () 'Variable initialisieren
I = 0
n = 0
Ende
publicFunctionClassarry (thisId, pid) 'Holen Sie sich die niedrigere ID
IfPID> 0Then
Sql = "Select*aus" & c_db_name & "wobei" & c_pid & "=" & thisid
anders
Sql = "Select*aus" & c_db_name & "wobei" & c_id & "=" & thisid
Endif
setrs_c = conn.execute (SQL)
n = n+1
dowhilenotrs_c.eof
Liste (0, i) = rs_c (c_id) 'in ein Array laden
Liste (1, i) = rs_c (c_className)
Liste (2, i) = n
'n = n+1
i = i+1
thisId = classArry (RS_C (C_ID), 1) 'Hier ist ein rekursiver Anruf bis zur letzten Unterklasse
RS_C.Movenext
Schleife
n = n-1
RS_C.CLOSE
Endfunktion
publicFunctionArryList () 'schließt alle Stammklassen aus
setrs_c = conn.execute ("selectCount (" & c_id & ") aus" & c_db_name)
Länge = RS_C (0)
RS_C.CLOSE
REDIMLIST (2, Lenght) 'setzen das Array
setrs1 = conn.execute ("select" & c_id & "von" & c_db_name & "wobei" & c_pid & "= 0")
dowhilenotrs1.eof
CallCassarry (RS1 (C_ID), 0)
'n = 1
RS1.Movenext
Schleife
RS1.CLOSE
Arryllist = Liste
Endfunktion
Endschicht
%>
Beispieltest:
Tischklasse
Felder
ID: Automatische Nummerierung
Klassenname: Name
PID: übergeordnete ID