战剑网络,网站建设,系统开发,程序设计

搜索Top
使用DW用ASP+ACCESS编写目录树


搜索关键字:
  利用access创建数据库listbase.mdb:
  数据表:listtable
  数据字段:listid    listname    listinfo    parentid

  连接方法:

<%

    dim sconn,sconnstr,ssql
    sconnstr="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("listbase.mdb")
    set sconn=server.createobject("adodb.connection")
    sconn.open sconnstr
%>

  把以上代码保存成文件:initialize.asp

  下面这段程序代码是用来显示目录树用的,保存成文件:inc.asp

<!--#include file="initialize.asp"-->
<script language=jscript>
<!--
//此函数用来显示与关闭它的子菜单的,并切换其前面的小图片
function showmenu(menuobj,issub){
if(menuobj.style.display=="none"){
menuobj.style.display="";
if(issub==1){
event.srcelement.src="../images/open.gif";
}
}
else{
menuobj.style.display="none";
if(issub==1){
event.srcelement.src="../images/close.gif";
}
}
}
//-->
</script>
<!--下面这段蓝色的区域,是设置目录树的根,其中的内容非数据内的数据,数据库内的数据都附着在它的下面//-->
<%
response.write("<table width=’100%’ border=’0’ cellspacing=’0’ cellpadding=’0’>" & chr(13))
response.write("<tr>" & chr(13)&"<td>" & chr(13) & "<table width=’100%’ border=’0’ cellspacing=’0’ cellpadding=’0’>")
response.write("<tr>" & chr(13) & "<td width=’18’ ><img src=’images/root.gif’ onclick=’jscript:showmenu(submenu0,0)’ style=’cursor:hand’ alt=’不可修改’></td>" & chr(13) & "<td width=’100’ class=’menupro’ id=’listname0’>根节点</td>" & chr(13))
response.write("<td width=’40’ class=’menufont’ align=’center’ style=’cursor:hand’ onclick=""jscript:showform(’add’,0)"">添加</td>" & chr(13))
response.write("<td width=’40’ class=’menufont’ align=’center’ onclick=’’></td>" & chr(13))
response.write("<td>&nbsp;</td></tr></table></td></tr>" & chr(13))
response.write("<tr id=’submenu0’>" & chr(13) & "<td colspan=’2’>" & chr(13))
’此处调用显示目录树的递归函数
listchild(0)
response.write("</td>" & chr(13) & "</tr>" & chr(13) & "</table>" & chr(13))


’下面代码为显示目录树最关键的函数,使用了递归方法(很多象这样类型的都是用递归来做的。)
function listchild(id)
dim srec,ssql,snum,stmp
set srec=server.createobject("adodb.recordset")
ssql="select listid,listname,listinfo,parentid from listtable where parentid=" & id
srec.open ssql,sconn,3,1
if not srec.eof then
snum=1
response.write("<table width=’100%’ border=’0’ cellspacing=’0’ cellpadding=’0’>" & chr(13))
while not srec.eof
stmp=sconn.execute("select count(listid) as countsub from listtable where parentid=" & srec("listid"))
if stmp("countsub")>0 then
response.write("<tr>" & chr(13))
if snum=srec.recordcount then
response.write("<td width=’18’ valign=’top’><img src=’images/angel.gif’></td>" & chr(13))
else
response.write("<td width=’18’ background=’images/eline.gif’ valign=’top’><img src=’images/t.gif’ ></td>" & chr(13))
end if
response.write("<td>" & chr(13) & "<table width=’100%’ border=’0’ cellspacing=’0’ cellpadding=’0’>" & chr(13))
response.write("<tr>" & chr(13) & "<td width=’118’ class=’menupro’ id=’listname" & srec("listid") & "’><img id=’img" & srec("listid") & "’ style=’cursor:hand’ src=’images/close.gif’ align=’absmiddle’ onclick=’jscript:showmenu(submenu" & srec("listid") & ",1)’ alt=’" & srec("listinfo") & "’>" & server.htmlencode(srec("listname")) & "</td>" & chr(13) & "<td width=’40’ class=’menufont’><div align=’center’ style=’cursor:hand’ onclick=""jscript:showform(’add’," & srec("listid") & ")"">添加</div></td><td width=’40’ class=’menufont’><div align=’center’ style=’cursor:hand’ onclick=""jscript:showform(’edit’," & srec("listid") & ")"">编辑</div></td>" & chr(13))
response.write("<td width=’40’ class=’menufont’><div align=’center’ style=’cursor:hand’ onclick=""jscript:window.location=’disp.asp?disp=del&parentid=" & srec("listid") & "’"">删除 </div></td>" & chr(13) & "<td>&nbsp;</td>" & chr(13) & "</tr>" & chr(13) & "</table>" & chr(13) & "</td>" & chr(13) & "</tr>" & chr(13))
response.write("<tr id=’submenu" & srec("listid") &"’ style=’display:none’>")
if snum=srec.recordcount then


response.write("<td width=’18’ valign=’top’")
response.write("<img src=’images/angel.gif’ >")
response.write("</td>" & chr(13))
else
response.write("<td width=’18’ valign=’top’ background=’images/eline.gif’>")
response.write("</td>" & chr(13))
end if
response.write("<td>" & chr(13))
listchild(srec("listid"))
response.write("</td>" & chr(13) & "</tr>" & chr(13))
else
response.write("<tr>" & chr(13))
if snum=srec.recordcount then
response.write("<td width=’18’ valign=’top’><img src=’images/angel.gif’></td>" & chr(13))
else
response.write("<td width=’18’ background=’images/eline.gif’ valign=’top’><img src=’images/t.gif’ ></td>" & chr(13))
end if
response.write("<td>" & chr(13) & "<table width=’100%’ border=’0’ cellspacing=’0’ cellpadding=’0’>" & chr(13))
response.write("<tr>" & chr(13) & "<td width=’118’ class=’menupro’ id=’listname" & srec("listid") & "’><img id=’img" & srec("listid") & "’ src=’images/file.gif’ align=’absmiddle’ alt=’" & srec("listinfo") & "’>" & server.htmlencode(srec("listname")) & "</td>" & chr(13) & "<td width=’40’ class=’menufont’><div align=’center’ style=’cursor:hand’ onclick=""jscript:showform(’add’," & srec("listid") & ")"">添加</div></td><td width=’40’ class=’menufont’><div align=’center’ style=’cursor:hand’ onclick=""jscript:showform(’edit’," & srec("listid") & ")"&uot;>编辑</div></td>" & chr(13))
response.write("<td width=’40’ class=’menufont’><div align=’center’ style=’cursor:hand’ onclick=""jscript:window.location=’disp.asp?disp=del&parentid=" & srec("listid") & "’"">删除</div></td>" & chr(13) & "<td>&nbsp;</td>" & chr(13) & "</tr>" & chr(13) & "</table>" & chr(13) & "</td>" & chr(13) & "</tr>" & chr(13))
end if
srec.movenext
snum=snum+1
wend
response.write("</table>" & chr(13))
end if
srec.close ’关闭记录集
set srec=nothing ’关闭记录集
end function
sconn.close ’关闭数据库链接
set sconn=nothing ’关闭数据库链接
%>

  下面这是调用页代码,保存成index.asp

br> </tr>
<tr>
<td width="70">
<div align="right" class="menufont">节点说明:</div></td>
<td><textarea name="listinfo" cols="19" rows="3" class="text1" id="listinfo"></textarea></td>
<td class="menufont">50个字符</td>
</tr>
<tr>
<td colspan="2"><table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="80">&nbsp;</td>
<td width="40"> <input name="submitbut" type="submit" class="divbut" id="submitbut" value="提交" onclick="jscript:addnodeform.submit();this.disabled=’disabled’">
</td>
<td width="10">&nbsp;</td>
<td width="40"> <input name="cancelbut" type="button" class="divbut" id="cancelbut" onclick="jscript:addnodediv.style.display=’none’;" value="取消">
</td>
<td>&nbsp;</td>
</tr>
</table></td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</div>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<!--此处为包含文件//-->
<div id="layer1" class="treediv">
<!--#include file="inc.asp"-->
</div>
</td>
</tr>
</table>
</body>
</html>

<%@language=’vbscript’ codepage=’936’%>
<html>
<head>
<meta http-equiv=’content-type’ content=’text/html; charset=gb2312’>
<title>目录树</title>
<script language=’javascript’ type=’text/javascript’>
<!--
function mm_reloadpage(init) { //reloads the window if nav4 resized
if (init==true) with (navigator) {if ((appname==’netscape’)&&(parseint(appversion)==4)) {
document.mm_pgw=innerwidth; document.mm_pgh=innerheight; onresize=mm_reloadpage; }}
else if (innerwidth!=document.mm_pgw || innerheight!=document.mm_pgh) location.reload();
}
mm_reloadpage(true);
//-->
</script>
<script language="jscript">
<!--

//此函数设置处理表单的内容
//比如添加时,表单为空,并显示为什么节点添加子节点
//比如修改时,表单内为相应节点的内容,并显示在修改什么节点


function showform(disp,parentid){
addnodediv.style.display="";
document.all.addnodeform.disp.value=disp;
document.all.addnodeform.parentid.value=parentid;
if(disp=="edit"){
document.all.addnodeform.listinfo.value=eval("img"+parentid+".alt");
document.all.addnodeform.listname.value=eval("listname"+parentid+".innertext");
infovalue.innertext="编辑["+eval("listname"+parentid+".innertext")+"]节点";
}
else{
document.all.addnodeform.listinfo.value="";
document.all.addnodeform.listname.value="";
infovalue.innertext="给节点["+eval("listname"+parentid+".innertext")+"]添加子节点";
}
}


<!--这棕色部分为移动表单代码,可以不要。//-->
function mm_findobj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexof("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=mm_findobj(n,d.layers[i].document);
if(!x && d.getelementbyid) x=d.getelementbyid(n); return x;
}

function mm_draglayer(objname,x,hl,ht,hw,hh,tofront,dropback,cu,cd,cl,cr,targl,targt,tol,dropjs,et,dragjs) { //v4.01
//copyright 1998 macromedia, inc. all rights reserved.
var i,j,alayer,retval,curdrag=null,curleft,curtop,ie=document.all,ns4=document.layers;
var ns6=(!ie&&document.getelementbyid), ns=(ns4||ns6); if (!ie && !ns) return false;
retval = true; if(ie && event) event.returnvalue = true;
if (mm_draglayer.arguments.length > 1) {
curdrag = mm_findobj(objname); if (!curdrag) return false;
if (!document.alllayers) { document.alllayers = new array();
with (document) if (ns4) { for (i=0; i<layers.length; i++) alllayers[i]=layers[i];
for (i=0; i<alllayers.length; i++) if (alllayers[i].document && alllayers[i].document.layers)
with (alllayers[i].document) for (j=0; j<layers.length; j++) alllayers[alllayers.length]=layers[j];
} else {
if (ns6) { var spns = getelementsbytagname("span"); var all = getelementsbytagname("div");
for (i=0;i<spns.length;i++) if (spns[i].style&&spns[i].style.position) alllayers[alllayers.length]=spns[i];}
for (i=0;i<all.length;i++) if (all[i].style&&all[i].style.position) alllayers[alllayers.length]=all[i];
} }
curdrag.mm_dragok=true; curdrag.mm_targl=targl; curdrag.mm_targt=targt;
curdrag.mm_tol=math.pow(tol,2); curdrag.mm_hleft=hl; curdrag.mm_htop=ht;
curdrag.mm_hwidth=hw; curdrag.mm_hheight=hh; curdrag.mm_tofront=tofront;
curdrag.mm_dropback=dropback; curdrag.mm_dropjs=dropjs;
curdrag.mm_everytime=et; curdrag.mm_dragjs=dragjs;
curdrag.mm_oldz = (ns4)?curdrag.zindex:curdrag.style.zindex;
curleft= (ns4)?curdrag.left:(ns6)?parseint(curdrag.style.left):curdrag.style.pixelleft;
if (string(curleft)=="nan") curleft=0; curdrag.mm_startl = curleft;
curtop = (ns4)?curdrag.top:(ns6)?parseint(curdrag.style.top):curdrag.style.pixeltop;
if (string(curtop)=="nan") curtop=0; curdrag.mm_startt = curtop;
curdrag.mm_bl=(cl<0)?null:curleft-cl; curdrag.mm_bt=(cu<0)?null:curtop-cu;
curdrag.mm_br=(cr<0)?null:curleft+cr; curdrag.mm_bb=(cd<0)?null:curtop+cd;
curdrag.mm_leftright=0; curdrag.mm_updown=0; curdrag.mm_snapped=false; //use in your js!
document.onmousedown = mm_draglayer; document.onmouseup = mm_draglayer;
if (ns) document.captureevents(event.mousedown|event.mouseup);
} else {
var theevent = ((ns)?objname.type:event.type);
if (theevent == ’mousedown’) {
var mousex = (ns)?objname.pagex : event.clientx + document.body.scrollleft;
var mousey = (ns)?objname.pagey : event.clienty + document.body.scrolltop;
var maxdragz=null; document.mm_maxz = 0;
for (i=0; i<document.alllayers.length; i++) { alayer = document.alllayers[i];
var alayerz = (ns4)?alayer.zindex:parseint(alayer.style.zindex);
if (alayerz > document.mm_maxz) document.mm_maxz = alayerz;
var isvisible = (((ns4)?alayer.visibility:alayer.style.visibility).indexof(’hid’) == -1);
if (alayer.mm_dragok != null && isvisible) with (alayer) {
var parentl=0; var parentt=0;
if (ns6) { parentlayer = alayer.parentnode;
while (parentlayer != null && parentlayer.style.position) {
parentl += parseint(parentlayer.offsetleft); parentt += parseint(parentlayer.offsettop);
parentlayer = parentlayer.parentnode;
} } else if (ie) { parentlayer = alayer.parentelement;
while (parentlayer != null && parentlayer.style.position) {
parentl += parentlayer.offsetleft; parentt += parentlayer.offsettop;
parentlayer = parentlayer.parentelement; } }
var tmpx=mousex-(((ns4)?pagex:((ns6)?parseint(style.left):style.pixelleft)+parentl)+mm_hleft);
var tmpy=mousey-(((ns4)?pagey:((ns6)?parseint(style.top):style.pixeltop) +parentt)+mm_htop);
if (string(tmpx)=="nan") tmpx=0; if (string(tmpy)=="nan") tmpy=0;
var tmpw = mm_hwidth; if (tmpw <= 0) tmpw += ((ns4)?clip.width :offsetwidth);
var tmph = mm_hheight; if (tmph <= 0) tmph += ((ns4)?clip.height:offsetheight);
if ((0 <= tmpx && tmpx < tmpw && 0 <= tmpy && tmpy < tmph) && (maxdragz == null
|| maxdragz <= alayerz)) { curdrag = alayer; maxdragz = alayerz; } } }
if (curdrag) {
document.onmousemove = mm_draglayer; if (ns4) document.captureevents(event.mousemove);
curleft = (ns4)?curdrag.left:(ns6)?parseint(curdrag.style.left):curdrag.style.pixelleft;
curtop = (ns4)?curdrag.top:(ns6)?parseint(curdrag.style.top):curdrag.style.pixeltop;
if (string(curleft)=="nan") curleft=0; if (string(curtop)=="nan&quo;) curtop=0;
mm_oldx = mousex - curleft; mm_oldy = mousey - curtop;
document.mm_curdrag = curdrag; curdrag.mm_snapped=false;
if(curdrag.mm_tofront) {
eval(’curdrag.’+((ns4)?’’:’style.’)+’zindex=document.mm_maxz+1’);
if (!curdrag.mm_dropback) document.mm_maxz++; }
retval = false; if(!ns4&&!ns6) event.returnvalue = false;
} } else if (theevent == ’mousemove’) {
if (document.mm_curdrag) with (document.mm_curdrag) {
var mousex = (ns)?objname.pagex : event.clientx + document.body.scrollleft;
var mousey = (ns)?objname.pagey : event.clienty + document.body.scrolltop;
newleft = mousex-mm_oldx; newtop = mousey-mm_oldy;
if (mm_bl!=null) newleft = math.max(newleft,mm_bl);
if (mm_br!=null) newleft = math.min(newleft,mm_br);
if (mm_bt!=null) newtop = math.max(newtop ,mm_bt);
if (mm_bb!=null) newtop = math.min(newtop ,mm_bb);
mm_leftright = newleft-mm_startl; mm_updown = newtop-mm_startt;
if (ns4) {left = newleft; top = newtop;}
else if (ns6){style.left = newleft; style.top = newtop;}
else {style.pixelleft = newleft; style.pixeltop = newtop;}
if (mm_dragjs) eval(mm_dragjs);
retval = false; if(!ns) event.returnvalue = false;
} } else if (theevent == ’mouseup’) {
document.onmousemove = null;
if (ns) document.releaseevents(event.mousemove);
if (ns) document.captureevents(event.mousedown); //for mac ns
if (document.mm_curdrag) with (document.mm_curdrag) {
if (typeof mm_targl ==’number’ && typeof mm_targt == ’number’ &&
(math.pow(mm_targl-((ns4)?left:(ns6)?parseint(style.left):style.pixelleft),2)+
math.pow(mm_targt-((ns4)?top:(ns6)?parseint(style.top):style.pixeltop),2))<=mm_tol) {
if (ns4) {left = mm_targl; top = mm_targt;}
else if (ns6) {style.left = mm_targl; style.top = mm_targt;}
else {style.pixelleft = mm_targl; style.pixeltop = mm_targt;}
mm_snapped = true; mm_leftright = mm_startl-mm_targl; mm_updown = mm_startt-mm_targt; }
if (mm_everytime || mm_snapped) eval(mm_dropjs);
if(mm_dropback) {if (ns4) zindex = mm_oldz; else style.zindex = mm_oldz;}
retval = false; if(!ns) event.returnvalue = false; }
document.mm_curdrag = null;
}
if (ns) document.routeevent(objname);
} return retval;
}
//-->
</script>
<link href=’css/css.css’ rel=’stylesheet’ type=’text/css’>
</head>

<body bgcolor="#4a8cce" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div id="addnodediv" style="position:absolute; left:400; top:300; width:300; height:135; z-index:1;display:none;" class="formdiv" onmousedown="mm_draglayer(’addnodediv’,’’,1,1,300,30,true,false,-1,-1,-1,-1,false,false,0,’’,false,’’)">
<form action="disp.asp" method="get" name="addnodeform" id="addnodeform">
<table width="300" border="0" cellspacing="0" cellpadding="3">
<tr style="cursor:hand">
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div id="infovalue" class="menufont"></div></td>
<td><div align="right">
<input name="parentid" type="hidden" id="parentid">
<input name="disp" type="hidden" id="disp">
<img src="../images/close2.gif" alt="点击关闭" width="13" height="13" style="cursor:hand" onclick="jscript:addnodediv.style.display=’none’;"></div></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="70" class="menufont">
<div align="right">节点名称:</div></td>
<td width="120"><input name="listname" type="text" class="text1" id="listname"></td>
<td class="menufont">10个字符

  下面是提交信息处理页的代码,保存为disp.asp

<!--#include file="initialize.asp"-->
<%
function checkstr(str)
str=replace(str,"’","’’",1,-1,1)
checkstr=str
end function

dim disp,parentid,listname,listinfo
disp=request.querystring("disp")
parentid=request.querystring("parentid")
select case disp
case "add"
listname=checkstr(left(request.querystring("listname"),10))
listinfo=checkstr(left(request.querystring("listinfo"),50))
if listname="" then listname="空白节点"
if listinfo="" then listinfo="此节点在添加入未填写内容"
ssql="insert into listtable (listname,listinfo,parentid) values(’" & listname & "’,’" & listinfo & "’," & parentid & ")"
case "edit"
listname=checkstr(left(request.querystring("listname"),10))
listinfo=checkstr(left(request.querystring("listinfo"),50))
if listname="" then listname="空白节点"
if listinfo="" then listinfo="此节点在添加入未填写内容"
ssql="update listtable set listname=’" & listname & "’,listinfo=’" & listinfo & "’ where listid=" & parentid
case "del"
ssql="delete from listtable where listid=" & parentid & " or parentid=" & parentid
end select
sconn.execute ssql,,1
response.redirect("index.asp")
%>

  以上代码保存成的文件放在同一目录下面(在这里我们称为根目录)。
  在根目录下新建一个css目录.
  下面为css定义,保存成css.css文件,放在css目录下。注:有一两个样式是不要的,我没删
.menupro {
    border-top: 1px dotted #a5bbe0;
    border-right: 1px dotted #31548e;
    border-bottom: 1px dotted #31548e;
    border-left: 1px dotted #a5bbe0;
    overflow: visible;
    font-family: "verdana", "arial", "helvetica", "sans-serif";
    font-size: 12px;

}
.menugro {
    border-top: 2px outset #31548e;
    border-right: 2px outset #a5bbe0;
    border-bottom: 2px outset #a5bbe0;
    border-left: 2px outset #31548e;
    overflow: visible;
    font-family: "verdana", "arial", "helvetica", "sans-serif";
    font-size: 12px;


}
.menufont {
    font-family: "verdana", "arial", "helvetica", "sans-serif";
    font-size: 12px;
}
.showdiv {
    display:’’;
}
.hiddendiv {
    display:none;
}
.treediv {
    background-color: #a8d5ea;
    height: 100%;
    width: 100%;
    border-top-width: 2px;
    border-right-width: 2px;
    border-bottom-width: 2px;
    border-left-width: 2px;
    border-top-style: inset;
    border-right-style: inset;
    border-bottom-style: inset;
    border-left-style: inset;
    border-top-color: #3680c9;
    border-right-color: #bcd5ed;
    border-bottom-color: #bcd5ed;
    border-left-color: #3680c9;
    overflow: auto;
    padding: 20px;


}
body {
    overflow: hidden;
}
.formdiv {
    font-family: "verdana", "arial", "helvetica", "sans-serif";
    font-size: 12px;
    font-weight: normal;
    background-color: #7abdde;
    height: 200px;
    width: 300px;
    border-top: 1px outset #b9dcff;
    border-right: 1px outset #004488;
    border-bottom: 1px outset #004488;
    border-left: 1px outset #b9dcff;
    overflow: hidden;


}
.text1 {
    width: 160px;
}
.divbut {
    font-family: "verdana", "arial", "helvetica", "sans-serif";
    font-size: 12px;
    font-weight: normal;
    background-color: #3399cc;
    height: 20px;
    width: 40px;
    border: 1px outset;

}


  另在根目录下建一个images目录。用来放那些文件夹样子的小图。

  打包下载[请使用winrar3.0解压]:小图片


[ 打印本页 ] [ 收藏本页 ]

[上一篇]:已经到顶了
[下一篇]:修改DreamweaverMX生成的默认代码
 ·网页风格化用CSS实现皮肤适时切换
 ·网页Flash播放代码的一个小技巧
 ·免费空间广告万能消除代码
 ·用Javascript写的一个映射表类
 ·SEO:Yahoo和Google在搜索上的区别

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
搜索Top

关于我们 - 联系我们 - 广告业务 - 友情链接 - 网站制作 - 留言板 - 会员注册
All Right Zjm.Net.Cn (zjm Enterprise v3.0)
联系电话:0576-8603312 地址:浙江省台州市经济开发区
技术支持:点击这里给我发消息280610248 业务: 点击这里给我发消息40520767 客服: 点击这里给我发消息441758646
E-mail:zjm@zjm.net.cn 备案证书号:浙ICP备06030047号