ASP+ACCESS 在数据量达100万条记录下,载入速度仍然惊人....
// 网上转载. 忘了作者... : )
//********************** Index.asp ************************//
1
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
2
<%Option Explicit%>
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
<!--
10
var d1,d2;
11
12
function expand(id)
13
{
14
var d=new Date();
15
d1=d.valueOf();
16
17
var s_id = eval("s" + id);
18
var dir_id = eval("dir" + id);
19
if(s_id.href != '')
20
{
21
//window.open(s_id.href);
22
//or
23
//top.frames['FrameName'].location.href = s_id.href;
24
}
25
26
switch(dir_id.open)
27
{
28
//改变"+","-"
29
case "true":
30
{
31
with(dir_id)
32
{
33
innerText = "+";
34
open = "false";
35
className = 'dirclose';
36
}
37
if(document.getElementById("t" + id))
38
{
39
eval("t"+id).style.display = 'none';
40
document.getElementById("load_" + id).style.display = 'none';
41
return;
42
}
43
else
44
{
45
document.getElementById("load_" + id).style.display = 'none';
46
}
47
break;
48
}
49
case "false":
50
{
51
with(dir_id)
52
{
53
innerText = "-";
54
open = "true";
55
className = 'diropen';
56
}
57
58
document.getElementById("load_" + id).style.display = '';
59
60
if(document.getElementById("t" + id))
61
{
62
eval("t" + id).style.display = '';
63
eval("load_" + id).style.display = 'none';
64
return;
65
}
66
else
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
}
74
75
}
76
77
function ArrToHtml(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
83
for (var i = 0; i < ArrNode.length; i++)
84
{
85
if (ArrNode[i].iChildren == 0)
86
{
87
str = '.';
88
opened = 'no';
89
cls = 'dirNode';
90
}
91
else
92
{
93
str = '+';
94
opened = 'false';
95
cls = 'dirclose';
96
}
97
98
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>';
99
100
if (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
}
105
106
node_html += '</table>';
107
if (document.getElementById("load_" + nodeid))
108
{
109
document.getElementById("load_" + nodeid).style.display = "none";
110
document.getElementById("node" + nodeid).innerHTML += node_html;
111
var d=new Date();
112
d2=d.valueOf();
113
message.innerHTML = "耗时:"+(d2-d1)+"ms";
114
}
115
}
116
-->
117
</script>
118
</head>
119
120
<body topmargin="0" leftmargin="0" scroll="yes">
121
<%
122
Dim conn,rs
123
Dim s,open,cls
124
On Error Resume Next
125
Set conn = Server.CreateObject("ADODB.Connection")
126
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("Tree.mdb") & ";Persist Security Info=False"
127
Set rs = Server.CreateObject("ADODB.Recordset")
128
129
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
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
<%
140
Do While Not rs.EOF
141
If rs("children") = 0 Then
142
s = "."
143
open = "no"
144
cls = "dirNode"
145
Else
146
s = "+"
147
open = "false"
148
cls = "dirclose"
149
End If
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
<% If rs("children") > 0 Then%>
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
<%End If%>
167
<%
168
rs.MoveNext
169
Loop
170
%>
171
</table>
172
</div>
173
</td>
174
</table>
175
</center>
176
</div>
177
<%
178
Set rs = Nothing
179
Set conn = 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
<%Option Explicit%>
2
<script language="JavaScript">
3
function NodeClass(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
}
12
13
var ArrNode = new Array();
14
<%
15
Dim conn,rs,s,cls,href,Open
16
Dim nodeid,i
17
nodeid = Request.QueryString("id")
18
'On Error Resume Next
19
Set conn = Server.CreateObject("ADODB.Connection")
20
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("tree.mdb") & ";Persist Security Info=False"
21
Set rs = Server.CreateObject("ADODB.Recordset")
22
rs.Open "select *,(select count(*) from deeptree where parentid = T.id) as children from deeptree T where parentid=" & nodeid & "",conn,1,3
23
i=0
24
Do While Not rs.EOF
25
%>
26
ArrNode[<%=i%>] = new NodeClass(<%=rs("id")%>,'<%=trim(rs("content"))%>','<%=trim(rs("link"))%>',<%=rs("children")%>);
27
<%
28
29
i=i+1
30
rs.MoveNext
31
Loop
32
33
Set rs = Nothing
34
%>
35
parent.ArrToHtml(ArrNode,'<% = nodeid %>');
36
-->
37
</script>
38
<%
39
Set conn = 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>
6
function fos(){
}{
7
if(style.backgroundColor!='#ffffff'){
8
style.color="#000000"
9
style.border="1 solid #888888"
10
style.backgroundColor='#DDDDDD'
11
}
12
else
13
{
}{style.color="#000000"
14
style.border="1 solid #999999"
15
style.backgroundColor='#ffffff'
16
}
17
}
18
19
function blu(){
}{
20
if(style.backgroundColor!='#ffffff'){
21
style.color="#000000"
22
style.border="1 solid #f2f2f2"
23
style.backgroundColor='#f2f2f2'
24
}
25
else
26
{
}{style.color="#000000"
27
style.border="1 solid #999999"
28
style.backgroundColor='#ffffff'
29
}
30
}
31
32
function st(){
}{
33
return false;
34
}
35
</SCRIPT>
36
</PUBLIC:COMPONENT>
//*************************** Style.css ****************//
1
body{
}{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
}
10
span.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
}
22
span.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(文本)
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。