ASP把无限级分类生成数组

数组

把无限级分类循环出来确实是一件头疼的事情。
比如,我们要循环出一个SELECT,或一个TABLE,要写一大堆判断。
有没好点的办法呢?
我的做法是生成数组,可以重复调用,直接循环数组就行了。
为了方便,我把它写成了类。

class.asp

返回所有分类的数组,并按顺序排列
有4个属性:
set aa=new classlist
aa.id="id"//编号的名称
aa.classname="classname"//分类名称
aa.pid="pid"//父ID名称
aa.db_name="class"//表名
list=aa.arrylist()

<%
class classlist
private c_id
private c_db_name
private c_pid
private c_classname
public property let id(str)
   c_id = str
end property
public property let db_name(str)
   c_db_name = str
end property
public property let pid(str)
   c_pid = str
end property
public property let classname(str)
   c_classname = str
end property

dim list()

dim i,n
Private Sub Class_Initialize()'初始化变量
i=0
n=0
End Sub

public function classarry(thisid,pid)'取得下级ID
if pid>0 then
sql="select * from "&c_db_name&" where "&c_pid&"="&thisid
else
sql="select * from "&c_db_name&" where "&c_id&"="&thisid
end if
set rs_c=conn.execute(sql)
n=n+1

do while not rs_c.eof

list(0,i)=rs_c(c_id)'装入数组中
list(1,i)=rs_c(c_classname)
list(2,i)=n
'n=n+1
i=i+1
thisid=classarry(rs_c(c_id),1)'这里递归调用,直到最后一个子类

rs_c.movenext
loop
n=n-1
rs_c.close

end function

public function arrylist()'循环出所有根类
set rs_c=conn.execute("select count("&c_id&") from "&c_db_name)
lenght=rs_c(0)
rs_c.close
redim list(2,lenght)'设置数组
set rs1=conn.execute("select "&c_id&" from "&c_db_name&" where "&c_pid&"=0")
do while not rs1.eof
call classarry(rs1(c_id),0)
'n=1
rs1.movenext
loop
rs1.close
arrylist=list
end function

end class
%>

实例测试:

表CLASS

字段
id:自动编号
classname:名称
pid:父ID

test.asp

<!--#include file="class.asp"-->
<%
Set conn=Server.CreateObject("ADODB.connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
StrDSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ="
StrDSN = StrDSN & Server.MapPath("test.mdb")
conn.Open strDSN

function ins(num)
str=""
for ii=1 to num
str=str&"|-"
next
ins=str
end function

set aa=new classlist
aa.id="id"
aa.classname="classname"
aa.pid="pid"
aa.db_name="class"
list=aa.arrylist()

response.write "<table border=1><tr><td>ID</td><td>名称</td><td>第几类</td></tr>"
for j=0 to ubound(list,2)
response.write "<tr><td>"&list(0,j)&"</td><td>"&list(1,j)&"</td><td>"&list(2,j)&"</td></tr>"
next
response.write "</table>"
'response.write list(1,3)
%>
<select name="">
<% for i=0 to ubound(list,2)%>
<option value=""><%
response.write ins(list(2,i))
response.write list(1,i)%></option>
<%next%>
</select

循环结果:

www.hubro.net/code/class/test.asp

基本上可以满足一般的需要了!

时间: 2024-08-02 19:32:39

ASP把无限级分类生成数组的相关文章

把无限级分类生成数组_ASP CLASS类

把无限级分类循环出来确实是一件头疼的事情. 比如,我们要循环出一个SELECT,或一个TABLE,要写一大堆判断. 有没好点的办法呢? 我的做法是生成数组,可以重复调用,直接循环数组就行了. 为了方便,我把它写成了类. class.asp 返回所有分类的数组,并按顺序排列 有4个属性: 复制代码 代码如下: set aa=new classlist  aa.id="id"//编号的名称  aa.classname="classname"//分类名称  aa.pid=

把无限级分类生成数组

把无限级分类循环出来确实是一件头疼的事情. 比如,我们要循环出一个SELECT,或一个TABLE,要写一大堆判断. 有没好点的办法呢? 我的做法是生成数组,可以重复调用,直接循环数组就行了. 为了方便,我把它写成了类. class.asp 返回所有分类的数组,并按顺序排列 有4个属性: 复制代码 代码如下:set aa=new classlist  aa.id="id"//编号的名称  aa.classname="classname"//分类名称  aa.pid=&

ASP.NET无限级分类之美好字段(深度字段)

下图中红色箭头是父类 而且属于根目录级别. 下面个字段为:ID 父ID 类型名称 深度 排序 前面3个字段没有什么可解释的,做过无限级分类设计的人都应该清楚 而第5个字段排序字段ID:43的23排序代表他在这张表排在23的根目录 而23下面的23,01 说明他是2级分类,排在23下面的第01个,也是支持99级分类. 而我比较特殊的是多了个深度字段,大家可以看上图数据, ID:40的 深度字段也是40,ID:43的 深度字段也是43. 而他们的下级子类,后面都跟了个 "," 加自己的ID

Asp.net 无限级分类实例代码_实用技巧

在网上找了很久也没有找到例子,没办法了,想偷懒也偷不成了,还是自己老老实实的写一个吧.不多废话,下面请看我做的详细方法. 1.无限级分类肯定要数据库支持啦,用户可以动态添加他们的分类嘛,下面是数据库的结构: 数据库主要有三个字段,这是最基本的了.第一个是主键,第二个是分类的名称了,第三个是父级目录id号. 2.成品的效果图:(大家最关心的是不是这个啊?看看是什么样子再看程序怎么吧) 看!!就长这个模样啦,这个层次关系就是上面那个数据所显示的结果.怎么样?还行吧... 3.最后就是提供程序咯,程序

asp飞飞无限级分类v1.0 Asp+sql+存储过程+ajax提供下载_应用技巧

本程序由 飞飞Asp乐园 ffasp.com 开发本程序官方下载网址http://www.ffasp.com/content.asp?newsid=945飞飞As!p技术乐园***能说明: 基于AJAX树状目录显示  支持灵活的 目录添加.删除.修改.排序.栏目备注.栏目移动[向上] 支持 栏目选择 使用说明: 默认首页: index.asp 可以进行 目录添加.删除.修改.排序.栏目备注.栏目移动[向上] 栏目选择测试页面:columnshow.asp 栏目选择函数调用说明: 需要引用函数页:

ASP查询无限级分类子栏目ID

问题描述 我写了一个查询无限级子栏目ID的函数,代码如下:Function ChildSort(Cuz,SortID) fSortID = Int(SortID)Set RsLs=server.CreateObject("adodb.recordset")Sql="Select SortID From [Cuz_"&Cuz&"Sort] where ParentID="&fSortID&" order b

asp实现无限级分类的方法js版_ASP基础

MenuArr=new Array()MenuLenArr=new Array()SubMenuArr=new Array()MenuIdArr=new Array()MenuArr[1]="<%call top11%>" //洲名|||...MenuArr[2]="<%call top1%>" //洲名###国名|||...MenuIdArr[1]="zhou"MenuIdArr[2]="author"

asp飞飞无限级分类v1.0 Asp+sql+存储过程+ajax提供下载

本程序由 飞飞Asp乐园 ffasp.com 开发 本程序官方下载网址http://www.ffasp.com/content.asp?newsid=945飞飞As!p技术乐园 ***能说明: 基于AJAX树状目录显示  支持灵活的 目录添加.删除.修改.排序.栏目备注.栏目移动[向上] 支持 栏目选择 使用说明: 默认首页: index.asp 可以进行 目录添加.删除.修改.排序.栏目备注.栏目移动[向上] 栏目选择测试页面:columnshow.asp 栏目选择函数调用说明: 需要引用函数

asp实现无限级分类的方法js版

MenuArr=new Array() MenuLenArr=new Array() SubMenuArr=new Array() MenuIdArr=new Array() MenuArr[1]="<%call top11%>" //洲名|||... MenuArr[2]="<%call top1%>" //洲名###国名|||... MenuIdArr[1]="zhou" MenuIdArr[2]="auth