学院首页>网络编程>ASP> 动态载入树 (ASP+数据库)

动态载入树 (ASP+数据库)

作者: 来源: 添加时间:2006-5-21 18:35:43

//**********************  index.asp ************************//

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Option Explicit%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>tree</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
<!--
var d1,d2;

function expand(id)
{
 var d=new Date();
 d1=d.valueOf();

var s_id = eval("s" + id);
 var dir_id = eval("dir" + id);
 if(s_id.href != '')
 {
  //window.open(s_id.href);
  //or
  //top.frames['FrameName'].location.href = s_id.href;
 }

switch(dir_id.open)
 {
  //改变"+","-"
  case "true":
  {
with(dir_id)
{
 innerText = "+";
 open = "false";
 className = 'dirclose';
}
if(document.getElementById("t" + id))
{
 eval("t"+id).style.display = 'none';
 document.getElementById("load_" + id).style.display = 'none';
 return;
}
else
{
 document.getElementById("load_" + id).style.display = 'none';
}
break;
  }
  case "false":
  {
with(dir_id)
{
 innerText = "-";
 open = "true";
 className = 'diropen';
}

document.getElementById("load_" + id).style.display = '';

if(document.getElementById("t" + id))
{
 eval("t" + id).style.display = '';
 eval("load_" + id).style.display = 'none';
 return;
}
   else
{
 document.frames['hifm'].location.replace("subtree.asp?id=" + id);
}
   break;
  }
  default:dir_id.innerText = "."; dir_id.className = 'dirNode'; return;
 }

}

function ArrToHtml(ArrNode,nodeid)
{
 //输出到页面
 var node_html = '<table id="t' + nodeid + '" width="100%" border="0" style="position: relative; left: 18px;" cellspacing="0" cellpadding="0">';

var str,opened,cls
 for (var i = 0; i < ArrNode.length; i++)
 {
  if (ArrNode[i].iChildren == 0)
  {
str = '.';
opened = 'no';
cls = 'dirNode';
  }
  else
  {
str = '+';
opened = 'false';
cls = 'dirclose';
  }

node_html += '<tr><td id="node' + ArrNode[i].id + '" class="td_node" valign="top"><span class="' + cls + '" id="dir' + ArrNode[i].id + '" onclick="expand(' + ArrNode[i].id + ')" open="' + opened + '">' + str + '</span><span class="node" id="s' + ArrNode[i].id + '" onclick="expand(' + ArrNode[i].id + ')" title="' + ArrNode[i].Content + '" href="' + ArrNode[i].strLink + '">' + ArrNode[i].Content + '</span></td></tr>';

if (ArrNode[i].iChildren > 0)
  {
node_html += '<tr id="load_' + ArrNode[i].id + '" style="display: none"><td class="td_node"><table border="0" cellspacing="0" cellpadding="0" style="position: relative; left: 18; top: 0px"><tr><td class="td_node"><span class="dirNode">.</span><span class="load">Loading...</span></td></tr></table></td></tr>';
  }
 }

node_html += '</table>';
 if (document.getElementById("load_" + nodeid))
 {
  document.getElementById("load_" + nodeid).style.display = "none";
  document.getElementById("node" + nodeid).innerHTML += node_html;
  var d=new Date();
  d2=d.valueOf();
  message.innerHTML = "耗时:"+(d2-d1)+"ms";
 }
}
-->
</script>
</head>

<body topmargin="0" leftmargin="0" scroll="yes">
<%
Dim conn,rs
Dim s,open,cls
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("tree/tree.mdb") & ";Persist Security Info=False"
Set rs = Server.CreateObject("ADODB.Recordset")

rs.Open "select *,(select count(*) from deeptree where parentid = T.id) as children from deeptree T where parentid=0 order by parentid",conn,1,3
%>
<div id="message" style="height: 20px" align="center">   </div>
<div align="center">
  <center>
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%" bgcolor="#F2F2F2">
   <tr>
  <td width="260" valign="top" align="left">
<div id="treedir" style="overflow: auto; width: 30%; height: 100%;">
   <table border="0" cellspacing="0" cellpadding="0" style="position: relative; left: 18px; top: 20px;" width="100%">
<%
Do While Not rs.EOF
 If rs("children") = 0 Then
  s = "."
  open = "no"
  cls = "dirNode"
 Else
  s = "+"
  open = "false"
  cls = "dirclose"
 End If
%>
   <tr>
  <td id="node<% = rs("id")%>" class="td_node" valign="top"><span class="<% = cls %>" id="dir<% = rs("id") %>" onclick="expand(<%=rs("id")%>)" open="<% = open %>"><% = s %></span><span class="node" id="s<% = rs("id") %>" onclick="expand(<% = rs("id") %>)"  title="<% = Trim(rs("content")) %>" href="<% = Trim(rs("link")) %>"><% = rs("content") %></span>
  </td>
</tr>
<% If rs("children") > 0 Then%>
   <tr id="load_<% = rs("id") %>" style="display: none">
  <td class="td_node">
<table border="0" cellspacing="0" cellpadding="0" style="position:relative;left:18;top:0" width="100%">
   <tr>
  <td class="td_node"><span class="dirNode">.</span><span class="load">Loading...</span>
  </td>
   </tr>
</table>
  </td>
   </tr>
<%End If%>
<%
 rs.MoveNext
Loop
%>
</table>
  </div>
   </td>
</table>
  </center>
</div>
<%
Set rs = Nothing
Set conn = Nothing
%>
<iframe id='hifm' width=0 height=0 style="display: none" height="100%" width="100%"></iframe>
</body>
</html>

///****************** subtree.asp *********************//

<%Option Explicit%>
<script language="JavaScript">
function NodeClass(id,Content,strLink,iChildren)
{
 //this.id=parseInt(id);
 this.id=id;
this.Content=Content;
 this.strLink=strLink;
 this.iChildren=iChildren;
//this.iChildren=parseInt(iChildren);
}

var ArrNode = new Array();
<%
Dim conn,rs,s,cls,href,Open
Dim nodeid,i
nodeid = Request.QueryString("id")
'On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("tree/tree.mdb") & ";Persist Security Info=False"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select *,(select count(*) from deeptree where parentid = T.id) as children from deeptree T where parentid=" & nodeid & "",conn,1,3
i=0
Do While Not rs.EOF
 %>
 ArrNode[<%=i%>] = new NodeClass(<%=rs("id")%>,'<%=trim(rs("content"))%>','<%=trim(rs("link"))%>',<%=rs("children")%>);
 <%

i=i+1
 rs.MoveNext
Loop

Set rs = Nothing
%>
parent.ArrToHtml(ArrNode,'<% = nodeid %>');
-->
</script>
<%
Set conn = Nothing
%>

//********************* node.htc *********************//

<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="fos()"/>
<PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="blu()"/>
<PUBLIC:ATTACH EVENT="onselectstart" ONEVENT="st()"/>
<SCRIPT>
function fos(){
if(style.backgroundColor!='#ffffff'){
style.color="#000000"
style.border="1 solid #888888"
style.backgroundColor='#DDDDDD'
}
else
{style.color="#000000"
style.border="1 solid #999999"
style.backgroundColor='#ffffff'
}
}

function blu(){
if(style.backgroundColor!='#ffffff'){
style.color="#000000"
style.border="1 solid #f2f2f2"
style.backgroundColor='#f2f2f2'
}
else
{style.color="#000000"
style.border="1 solid #999999"
style.backgroundColor='#ffffff'
}
}

function st(){
return false;
}
</SCRIPT>
</PUBLIC:COMPONENT>

//***************************  style.css ****************//

body{font-size:12px}
#txt{font-size: 12px; color: #000000;  font-family: Courier New;border:1 solid #3366cc}
#hrf{font-size: 12px; color: #000000;  font-family: Courier New;border:1 solid #3366cc}
#sb{font-size: 12px; color: #000000;  font-family: Courier New;background-color:#d2e8ff;border:1 solid #3366cc;cursor:hand}
.node{position:relative;left:2;height:20;padding:3 3 1 3;font-size:12px;font-family: Courier New;cursor:hand;border:1 solid #f2f2f2;behavior:url(css/node.htc)}
.load{position:relative;left:2;height:20;padding:1 3 1 3;font-size:12px;font-family: Courier New;cursor:hand;border:1 solid #999999;background-color:#f2f2f2;color:#999999}
.td_node{height:22px}
#treedir{
}
span.diropen
{ padding-left:2px;
 overflow:hidden;
 line-height:3px;
 font-size:12px;
 padding-top:5px;
 width:11px;
 height:11px;
 border:solid 1px black;
 background-color:#ffffff;
 cursor:hand;
}
span.dirclose
{
 line-height:6px;
 font-size:9px;
 overflow:hidden;
 padding:2px;
 width:11px;
 height:11px;
 border:solid 1px black;
 background-color:#ffffff;
 cursor:hand;
}
.dirNode
{
 font-weight:bold
 overflow:visible;
 font-size:9px;
 line-height:3px;
 padding: 1px 1px 0px 3px;
 width:11px;
 height:11px;
 border:solid 1px black;
 background-color:#ffffff;
 cursor:hand;
}

// 把 node.htc, style.css 保存与 css 目录下. index.asp subtree.asp 放与根目录.
另新建一ACCESS数据库 tree.mdb
表deeptree 结构为 id,content, parentid,link

站内搜索