ASP+ACCESS 在数据量达100万条记录下,载入速度仍然惊人....
// 网上转载. 忘了作者... : )
//********************** Index.asp ************************//
1<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%> 2<%OptionExplicit%> 3<html> 4<head> 5<meta http-equiv="Content-Type"content="text/html; charset=gb2312"> 6<title>tree</title> 7<link href="css/style.css"rel="stylesheet"type="text/css"> 8<script language="JavaScript"> 9<!-- 10var d1,d2; 1112functionexpand(id) 13{ 14 var d=newDate(); 15 d1=d.valueOf(); 1617 var s_id=eval("s"+id); 18 var dir_id=eval("dir"+id); 19if(s_id.href !='') 20{ 21//window.open(s_id.href); 22//or 23//top.frames['FrameName'].location.href = s_id.href; 24} 2526 switch(dir_id.open) 27 { 28//改变"+","-" 29case"true": 30 { 31with(dir_id) 32 { 33 innerText="+"; 34 open="false"; 35 className='dirclose'; 36} 37if(document.getElementById("t"+id)) 38 { 39eval("t"+id).style.display='none'; 40document.getElementById("load_"+id).style.display='none'; 41return; 42 } 43else 44 { 45 document.getElementById("load_"+id).style.display='none'; 46} 47 break; 48 } 49case"false": 50 { 51with(dir_id) 52 { 53 innerText="-"; 54 open="true"; 55 className='diropen'; 56} 57 58 document.getElementById("load_"+id).style.display=''; 59 60if(document.getElementById("t"+id)) 61 { 62eval("t"+id).style.display=''; 63eval("load_"+id).style.display='none'; 64return; 65 } 66else 67 { 68 document.frames['hifm'].location.replace("subtree.asp?id=" + id); 69} 70 break; 71 } 72 default:dir_id.innerText="."; dir_id.className='dirNode'; return; 73} 7475} 7677functionArrToHtml(ArrNode,nodeid) 78{ 79//输出到页面 80 var node_html='<table id="t' + nodeid + '" width="100%" border="0" style="position: relative; left: 18px;" cellspacing="0" cellpadding="0">'; 81 82 var str,opened,cls 83for(var i=0; i<ArrNode.length; i++) 84 { 85if(ArrNode[i].iChildren==0) 86 { 87 str='.'; 88opened='no'; 89cls='dirNode'; 90} 91else 92 { 93 str='+'; 94opened='false'; 95cls='dirclose'; 96} 9798 node_html+='<tr><td id="node' + ArrNode[i].id + '" class="td_node" valign="top"><span class="' + cls + '" id="dir' + ArrNode[i].id + '" οnclick="expand(' + ArrNode[i].id + ')" open="' + opened + '">' + str + '</span><span class="node" id="s' + ArrNode[i].id + '" οnclick="expand(' + ArrNode[i].id + ')" title="' + ArrNode[i].Content + '" href="' + ArrNode[i].strLink + '">' + ArrNode[i].Content + '</span></td></tr>'; 99 100if(ArrNode[i].iChildren>0) 101 { 102 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>'; 103} 104 } 105106 node_html+='</table>'; 107if(document.getElementById("load_"+nodeid)) 108 { 109 document.getElementById("load_"+nodeid).style.display="none"; 110 document.getElementById("node"+nodeid).innerHTML+=node_html; 111 var d=newDate(); 112 d2=d.valueOf(); 113 message.innerHTML="耗时:"+(d2-d1)+"ms"; 114 } 115} 116--> 117</script> 118</head> 119120<body topmargin="0"leftmargin="0"scroll="yes"> 121<% 122Dimconn,rs 123Dims,open,cls 124OnErrorResumeNext 125Setconn=Server.CreateObject("ADODB.Connection") 126conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath("Tree.mdb")&";Persist Security Info=False" 127Setrs=Server.CreateObject("ADODB.Recordset") 128129rs.Open"select *,(select count(*) from deeptree where parentid = T.id) as children from deeptree T where parentid=0 order by parentid",conn,1,3 130%> 131<div id="message"style="height: 20px"align="center"></div> 132<div align="center"> 133<center> 134<table border="0"width="100%"cellspacing="0"cellpadding="0"height="100%"bgcolor="#F2F2F2"> 135<tr> 136<td width="260"valign="top"align="left"> 137<div id="treedir"style="overflow: auto; width: 30%; height: 100%;"> 138<table border="0"cellspacing="0"cellpadding="0"style="position: relative; left: 18px; top: 20px;"width="100%"> 139<% 140DoWhileNotrs.EOF 141Ifrs("children")=0Then 142 s="." 143open="no" 144cls="dirNode" 145Else 146 s="+" 147open="false" 148cls="dirclose" 149EndIf 150 %> 151<tr> 152<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> 153</td> 154</tr> 155<%Ifrs("children")>0Then%> 156<tr id="load_<% = rs("id") %>"style="display: none"> 157<td class="td_node"> 158<table border="0"cellspacing="0"cellpadding="0"style="position:relative;left:18;top:0"width="100%"> 159<tr> 160<td class="td_node"><span class="dirNode">.</span><span class="load">Loading</span> 161</td> 162</tr> 163</table> 164</td> 165</tr> 166<%EndIf%> 167<% 168 rs.MoveNext 169Loop 170 %> 171</table> 172</div> 173</td> 174</table> 175</center> 176</div> 177<% 178Setrs=Nothing 179Setconn=Nothing 180%> 181<iframe id='hifm' width=0 height=0 style="display: none" height="100%" width="100%"></iframe> 182</body> 183</html>
///****************** SubTree.asp *********************//
1<%OptionExplicit%> 2<script language="JavaScript"> 3functionNodeClass(id,Content,strLink,iChildren) 4{ 5//this.id=parseInt(id); 6 this.id=id; 7 this.Content=Content; 8 this.strLink=strLink; 9 this.iChildren=iChildren; 10//this.iChildren=parseInt(iChildren); 11} 1213var ArrNode=newArray(); 14<% 15Dimconn,rs,s,cls,href,Open 16Dimnodeid,i 17nodeid=Request.QueryString("id") 18'On Error Resume Next 19Setconn=Server.CreateObject("ADODB.Connection") 20conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath("tree.mdb")&";Persist Security Info=False" 21Setrs=Server.CreateObject("ADODB.Recordset") 22rs.Open"select *,(select count(*) from deeptree where parentid = T.id) as children from deeptree T where parentid="&nodeid&"",conn,1,3 23i=0 24DoWhileNotrs.EOF 25 %> 26 ArrNode[<%=i%>]=newNodeClass(<%=rs("id")%>,'<%=trim(rs("content"))%>','<%=trim(rs("link"))%>',<%=rs("children")%>); 27<% 2829 i=i+1 30 rs.MoveNext 31Loop 3233Setrs=Nothing 34%> 35parent.ArrToHtml(ArrNode,'<% = nodeid %>'); 36--> 37</script> 38<% 39Setconn=Nothing 40%>
//********************* Node.htc *********************//
1<PUBLIC:COMPONENT> 2<PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="fos()"/> 3<PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="blu()"/> 4<PUBLIC:ATTACH EVENT="onselectstart" ONEVENT="st()"/> 5<SCRIPT> 6function fos(){}{ 7if(style.backgroundColor!='#ffffff'){ 8style.color="#000000" 9style.border="1 solid #888888" 10style.backgroundColor='#DDDDDD' 11} 12else 13{}{style.color="#000000" 14style.border="1 solid #999999" 15style.backgroundColor='#ffffff' 16} 17} 1819function blu(){}{ 20if(style.backgroundColor!='#ffffff'){ 21style.color="#000000" 22style.border="1 solid #f2f2f2" 23style.backgroundColor='#f2f2f2' 24} 25else 26{}{style.color="#000000" 27style.border="1 solid #999999" 28style.backgroundColor='#ffffff' 29} 30} 3132function st(){}{ 33return false; 34} 35</SCRIPT> 36</PUBLIC:COMPONENT>
//*************************** Style.css ****************//
1body{}{font-size:12px} 2#txt{}{font-size:12px;color:#000000;font-family:Courier New;border:1 solid #3366cc} 3#hrf{}{font-size:12px;color:#000000;font-family:Courier New;border:1 solid #3366cc} 4#sb{}{font-size:12px;color:#000000;font-family:Courier New;background-color:#d2e8ff;border:1 solid #3366cc;cursor:hand} 5.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)} 6.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} 7.td_node{}{height:22px} 8#treedir{}{ 9} 10span.diropen 11{}{padding-left:2px; 12 overflow:hidden; 13 line-height:3px; 14 font-size:12px; 15 padding-top:5px; 16 width:11px; 17 height:11px; 18 border:solid 1px black; 19 background-color:#ffffff; 20 cursor:hand; 21} 22span.dirclose 23{}{ 24 line-height:6px; 25 font-size:9px; 26 overflow:hidden; 27 padding:2px; 28 width:11px; 29 height:11px; 30 border:solid 1px black; 31 background-color:#ffffff; 32 cursor:hand; 33} 34.dirNode 35{}{ 36 font-weight:bold 37 overflow:visible; 38 font-size:9px; 39 line-height:3px; 40 padding:1px 1px 0px 3px; 41 width:11px; 42 height:11px; 43 border:solid 1px black; 44 background-color:#ffffff; 45 cursor:hand; 46}
// 把 Node.htc, Style.css 保存在 CSS 目录下. Index.asp,SubTree.asp 放与根目录.
另新建一ACCESS数据库 Tree.mdb
表DeepTree 结构为 ID(自动编号),Content(文本), ParentID(数字),Link(文本)
- bootstrap treetable 树形网格,动态扩展,连数据库
二话不说,先看看效果图: 1.先来看写死的: 展开前~~ 展开后~~ 怎么实现呢? 先new 一个jsp文件,导入几个包,编写html代码,编写js代码,一个文件搞定! 1 <%@ page l ...
- asp数据库操作大全 [网站网页]
什么叫活动服务器组件(Active Server Compontents)?组件是基于Activex技术的代码片断,通过指定接口提供指定的一组服务,组件供给客户端(Clients)在运行时候请求的对象 ...
- LuoguP2617 Dynamic Rankings (动态主席树学习理解)
题目地址 题目链接 题解 动态主席树的板子题.动态主席树其实和静态的有很大差别,虽然同样是n个根,但是节点并不能共用,每个根节点表示bit上的一段区间. 所以其实是个树套树的东西来着,外层是bit,内 ...
- 模板 - 树上问题(树的直径、动态查询树的直径、树的重心)
整理的算法模板合集: ACM模板 目录 一.树的直径 树形DP 两次DFS / BFS(找到直径的两个端点) 二.动态修改树的边权并求每个时刻的直径(线段树) 三.树的重心 一.树的直径 树的直径满足 ...
- 深入浅出Android动态载入jar包技术
在实际项目中.因为某些业务频繁变更而导致频繁升级client的弊病会造成较差的用户体验,而这也恰是Web App的优势,于是便衍生了一种思路.将核心的易于变更的业务封装在jar包里然后通过网络下载下来 ...
- AMD规范:简单而优雅的动态载入JavaScript代码
本文翻译自http://www.sitepen.com/blog/2010/11/04/requirejsamd-module-forms/,并加入部分自己的解释. CommonJS 提出了一种用于同 ...
- ASP数据库插马小议
<from:lake2> 随着技术的发展,ASP数据库插马也不是什么新鲜的东东了,相信阁下也玩过这个的吧.呵呵,那你有没有遇到过插入的asp代码被空格拆开的情况呢(即插入的每个字符之间都出 ...
- Python 动态载入模块
lib文件夹下有test.py文件: test.py文件内容如下: class simple(object):def __init__(self):self.name='刚田武' 在'动态载入模块.p ...
- ligerui_ligerTree_005_动态增加“树”节点
动态添加ligerTree节点:效果图: 源码地址:http://download.csdn.net/detail/poiuy1991719/8571255 <%@ page language= ...