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

来源:互联网 发布:php私有属性赋值 编辑:程序博客网 时间:2024/05/01 01:25

//**********************  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

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 闲鱼买家说是假货退货怎么办 日验证失败次数上限怎么办 淘宝卖家发货不全怎么办 子账号登录不上怎么办 淘宝宝贝曝光量少怎么办 淘宝买东西退款卖家拒绝怎么办 华为手机淘宝不能收藏宝贝怎么办 包裹发出不想要了怎么办 淘宝改登录密码忘记了怎么办 三星s8应用闪退怎么办 淘宝购物商家不发货怎么办 淘宝商家迟迟不发货怎么办 买家地址写错了怎么办 买家写错快递地址怎么办 淘宝退款选择服务类型出不来怎么办 网购东西发错了怎么办 拒签商家不退款怎么办 红米手机无响应怎么办 淘宝网登录密码忘记了怎么办 淘宝网密码忘记了怎么办 京东抢购不发货怎么办 微商不想做了怎么办 减肥过程中饿了怎么办 滴滴车龄超过6年怎么办 网络公选课没过怎么办 大学网络课挂了怎么办 淘宝虚拟订单买家恶意退款怎么办 淘宝卖家虚拟发货怎么办 淘宝买虚拟产品被骗了怎么办 哈尔滨暖气低于十八度怎么办 淘客店铺没人买怎么办 淘宝商家不给退货怎么办 淘宝卖家拒绝退款申请怎么办 运费险赔付少了怎么办 买了运费险退货怎么办 卖家运费险退货怎么办 京东生鲜有坏的怎么办 与上级意见不一致时你将怎么办 物金所倒闭投资怎么办 电商平台欺骗客户怎么办 pdf电脑打开是乱码怎么办