看過網上很多asp無限分類的代碼,認爲在遞歸代碼中重複獲取記錄集,這樣太耗資源了。
下面的方法是一次獲取所有的無限分類記錄,然後通過函數轉換成json格式,這種方法不用重複執行rs獲取記錄集。
表結構
ID 主鍵ID
navName 導航名稱
pID 父ID,0爲頂級欄目
sortID 排序ID
'遞歸函數,把數據庫表的數據轉換成json數據,arrData-數組,parentID-父ID
sub dataToJson(byref arrData,byval parentID)
dim m, n
n = 0
m = 0
echo "["
Do While m<=ubound(arrData,2)
if arrData(2,m)=parentID then
if n <> 0 then echo ","
n = n + 1
echo "{"
echo """ID"":" & arrData(0,m)&","
echo """navName"":""" & arrData(1,m)&""","
echo """pID"":" & arrData(2,m)&","
echo """sortID"":" & arrData(3,m)&","
echo """childList"": "
call dataToJson(arrData,arrData(0,m))
echo "}"
end if
m=m+1
loop
echo "]"
end sub
'dim conn,arrData,temp,i,j,string
'set conn = new dataConn
'arrData = conn.getRowsByPa(1,"select id,navName,pID,sortID from Lim_nav where langID=? order by pID asc,sortID asc,addTime desc",array(array("langID",20,1,32,14)))
'if not isNull(arrData) then
'call dataToJson(arrData,0)
'else
' echo "no data"
'end if
'set conn = nothing
說明:dataconn爲數據庫連接類,已經封裝,getRowsByPa爲類的方法。具體的實現方法可通過rs.getRows,這個方法是返回的是數組格式的記錄。