手机
当前位置:查字典教程网 >编程开发 >ASP教程 >关于无限分级(ASP+数据库+JS)的实现代码
关于无限分级(ASP+数据库+JS)的实现代码
摘要:代码可以优化,请根据自己需求进行优化说明:所先把所有分类读取存放到JS数组中(如果数据量大可能就有点麻烦)当选择时候返回父分类ID在从数组中...

代码可以优化,请根据自己需求进行优化

说明:

所先把所有分类读取存放到JS数组中(如果数据量大可能就有点麻烦)

当选择时候返回父分类ID在从数组中找出符合的分类,然后显示给用户

数据库设计(可以根据自己需求添加字段,如此分类属于什么分类等等)

字段类型说明

id自动编号记录编号

cotename文本分类名称

byid数字父分类ID(即为此表ID,根接点时值为0)

JS部分代码(命名为*.asp)

复制代码 代码如下:

<%Dimconn

Setconn=Server.CreateObject("ADODB.Connection")

conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"&_

"DataSource="&Server.MapPath("Cote.mdb")

conn.Open

%>

functionCheckLm(thevalue){

varbyid=newArray();

varcotename=newArray();

varid=newArray();

vari;

varid_s;

varbyid_s;

varcotename_s;

varthevalue_r;

vardata='<selectname="lm"onchange="CheckLm(this.value)">'

id_s="|";

cotename_s='-选择-|';

<%setrs=server.CreateObject("adodb.recordset")

sql="select*from[DB_Cote]Orderbybyid,id"

rs.opensql,conn,1,1

i=0

ifnotrs.eofthen

dowhilenotrs.eof

response.Write("id["&i&"]="&rs("id")&";"&chr(10))

response.Write("byid["&i&"]="&rs("byid")&";"&chr(10))

response.Write("cotename["&i&"]='"&rs("cotename")&"';"&chr(10))

rs.movenext

i=i+1

loop

else

response.Write("id[0]=0;byid[0]=0;cotename[0]='无分类';")

endif

rs.close

setrs=nothing%>

if(thevalue==null||thevalue==undefined||thevalue==''){thevalue=0;}

//if(lmvalue==null||lmvalue==undefined||lmvalue==''){lmvalue=0;}

for(k=0;k<id.length;k++){

if(thevalue==id[k]){id_s+=thevalue+"|";cotename_s+=cotename[k]+"|";thevalue_r=byid[k];break;}else{thevalue_r=0;}

}

for(i=0;i<id.length;i++){

if(thevalue==byid[i]){

id_s+=id[i]+"|";cotename_s+=cotename[i]+"|";

}

}

if(id_s=='-1|'){

for(i=0;i<id.length;i++){

if(thevalue==id[i]){

id_s+=id[i]+"|";cotename_s+=cotename[i]+"|";

}

}

}

id_v=id_s.split("|");

cotename_v=cotename_s.split("|");

varlength=id_v.length-1;

for(j=0;j<length;j++){

if(thevalue==id_v[j]){

data+="<optionvalue='"+id_v[j]+"'selected>"+cotename_v[j]+"</option>";}

else{

data+="<optionvalue='"+id_v[j]+"'>"+cotename_v[j]+"</option>";

}

}

if(thevalue!=0){data+="<optionvalue='"+thevalue_r+"'>上级分类</option>";}

//alert(length+'/'+thevalue);

varlm=document.getElementById('lmid');

lm.innerHTML=data+"</select>";

}

<%Conn.Close:SetConn=Nothing%>

调用页面代码

复制代码 代码如下:

<%

Dimlm

lm=request("lm")

iflm=EmpytorNotIsnumeric(lm)thenlm=0

%>

<html>

<scripttype="text/javascript"src="*.asp"></script>

<bodyonLoad="CheckLm(<%=lm%>)">

<divid="lmid"></div>

</body>

</html>

运行后结果

function CheckLm(thevalue){ var byid=new Array(); var cotename=new Array(); var id=new Array(); var i; var id_s; var byid_s; var cotename_s; var thevalue_r; var data='' id_s="|"; cotename_s='-选择-|'; id[0]=1; byid[0]=0; cotename[0]='大栏目1'; id[1]=7; byid[1]=0; cotename[1]='大栏目2'; id[2]=2; byid[2]=1; cotename[2]='├大栏目1-1'; id[3]=3; byid[3]=1; cotename[3]='├大栏目1-2'; id[4]=4; byid[4]=1; cotename[4]='├大栏目1-3'; id[5]=5; byid[5]=4; cotename[5]='├-大栏目1-3-a'; id[6]=6; byid[6]=4; cotename[6]='├-大栏目1-3-b'; id[7]=10; byid[7]=6; cotename[7]='├--大栏目1-3-b-1'; id[8]=11; byid[8]=6; cotename[8]='├--大栏目1-3-b-2'; id[9]=12; byid[9]=6; cotename[9]='├--大栏目1-3-b-3'; id[10]=8; byid[10]=7; cotename[10]='├大栏目2-1'; id[11]=9; byid[11]=7; cotename[11]='├大栏目2-2'; if(thevalue==null||thevalue==undefined||thevalue==''){thevalue=0;} //if(lmvalue==null||lmvalue==undefined||lmvalue==''){lmvalue=0;} for(k=0;k

【关于无限分级(ASP+数据库+JS)的实现代码】相关文章:

用asp实现的数据库中存取文件的代码

asp中COM组件中如何连接数据库的代码

asp 全面安全数据连接代码

ASP使用FSO读取模板的代码

asp实现读取数据库输出json代码

ASP连接数据库的全能代码

ASP无组件分页实现思路及代码

ASP删除记录和链接数据库程序解释

在ASP中通过oo4o连接Oracle数据库的例子

在ASP中使用Oracle数据库

精品推荐
分类导航