特急,asp如何实现树状菜单结构?

xzou 2000-04-28 06:17:00
请问有哪位高手知道如何用asp实现树状菜单(treeview)结构,有什么方法或源代码请发给小弟一份,不胜感激。my e-mail:xzou@21cn.com
...全文
470 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xcom 2001-08-08
  • 打赏
  • 举报
回复
我测试了!
在asp中initializeDocument() 语句无法通过!
xzou 2001-08-02
  • 打赏
  • 举报
回复
好久不做asp了,也没做测试,结分太晚了,抱歉!
qxm 2000-05-23
  • 打赏
  • 举报
回复
用ASP实现网站的“目录树”管理

  
数据库结构(共使用了两个表)
1。tblCategory
字段名 类型
Root binary 说明树关或开(目录的根)
ID 自动编号 关键字
Sort integer 识别该字段内容的整数(如果root是开状态sort为0)表示显示的目录的顺序
Name text(255)可以包含html中的标识符
HREF text(255) 允许空
2。tblPages
ID 自动编号
Sort integer 关键字
Name text(255)
HREF text(255)

3.default.htm
〈html>
〈head>
〈title>JavaScript Tree Control Template〈/title>
〈/head>
〈frameset cols="210,*">
?〈frame src="tree.asp" name="TOC">
?〈frame src="main.htm" name="basefrm">
〈/frameset>
〈/html>

4.main.htm
〈head>〈title>〈/title>〈/head>
〈body>
〈h2>Start Page〈/h2>
〈/body>
〈/html>

5.tree.asp
Set conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
conn.open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("toc.mdb")

strsql = "SELECT tblCategory.Root, tblCategory.[ID], tblCategory.Sort AS CatSort, tblPages.sort AS LinkSort, tblCategory.[Name] AS CatName, tblCategory.HREF AS CatURL, tblPages.[Name] AS LinkName, tblPages.href AS LinkURL FROM tblCategory LEFT JOIN tblPages ON tblCategory.[ID] = tblPages.[ID] ORDER BY tblCategory.root ASC, tblCategory.Sort, tblPages.sort"

rs.open strsql, conn, 2, 2

if not rs.eof then rs.movefirst
currentID = "" %>
〈html>
〈head>
〈link rel="stylesheet" href="ftie4style.css">
〈!-- Infrastructure code for the tree -->
〈script src="ftiens4.js">〈/script>
〈!-- Execution of the code that actually builds the specific tree -->
〈script>
USETEXTLINKS = 1
〈%
Do While Not Rs.EOF
If Rs("Root") = True Then %>
foldersTree = gFld("〈%= Rs("CatName") %>", "〈%= Rs("CatURL") %>")
〈% Else %>
aux1 = insFld(foldersTree, gFld("〈%= Rs("CatName") %>", "〈%= Rs("CatURL") %>"))
〈% currentID = Rs("ID")
savedID = Rs("ID")
Do While currentID = savedID and not rs.eof
if Rs("LinkName") 〈> "" Then %>
insDoc(aux1, gLnk(0, "〈%= Rs("LinkName") %>", "〈%= Rs("LinkURL") %>"))
〈%
end if
Rs.MoveNext
if not rs.eof then currentID = Rs("ID")
Loop
End If
if currentID = "" then rs.movenext
Loop %>
〈/script>
〈script>
initializeDocument()
〈/script>
〈base target="basefrm">
〈title>〈/title>
〈/head>
〈body bgcolor="white">
〈/body>
〈/html>


qxm 2000-05-23
  • 打赏
  • 举报
回复
用ASP实现网站的“目录树”管理

  本来想多翻译些东西出来的,但是最近越来越忙了,以后我尽量多贴些
短小的代码出来,翻译是越来越没空完成了。呵呵。
数据库结构(共使用了两个表)
1。tblCategory
字段名 类型
Root binary 说明树关或开(目录的根)
ID 自动编号 关键字
Sort integer 识别该字段内容的整数(如果root是开状态sort为0)表示显示的目录的顺序
Name text(255)可以包含html中的标识符
HREF text(255) 允许空
2。tblPages
ID 自动编号
Sort integer 关键字
Name text(255)
HREF text(255)

3.default.htm
〈html>
〈head>
〈title>JavaScript Tree Control Template〈/title>
〈/head>
〈frameset cols="210,*">
?〈frame src="tree.asp" name="TOC">
?〈frame src="main.htm" name="basefrm">
〈/frameset>
〈/html>

4.main.htm
〈head>〈title>〈/title>〈/head>
〈body>
〈h2>Start Page〈/h2>
〈/body>
〈/html>

5.tree.asp
Set conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
conn.open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("toc.mdb")

strsql = "SELECT tblCategory.Root, tblCategory.[ID], tblCategory.Sort AS CatSort, tblPages.sort AS LinkSort, tblCategory.[Name] AS CatName, tblCategory.HREF AS CatURL, tblPages.[Name] AS LinkName, tblPages.href AS LinkURL FROM tblCategory LEFT JOIN tblPages ON tblCategory.[ID] = tblPages.[ID] ORDER BY tblCategory.root ASC, tblCategory.Sort, tblPages.sort"

rs.open strsql, conn, 2, 2

if not rs.eof then rs.movefirst
currentID = "" %>
〈html>
〈head>
〈link rel="stylesheet" href="ftie4style.css">
〈!-- Infrastructure code for the tree -->
〈script src="ftiens4.js">〈/script>
〈!-- Execution of the code that actually builds the specific tree -->
〈script>
USETEXTLINKS = 1
〈%
Do While Not Rs.EOF
If Rs("Root") = True Then %>
foldersTree = gFld("〈%= Rs("CatName") %>", "〈%= Rs("CatURL") %>")
〈% Else %>
aux1 = insFld(foldersTree, gFld("〈%= Rs("CatName") %>", "〈%= Rs("CatURL") %>"))
〈% currentID = Rs("ID")
savedID = Rs("ID")
Do While currentID = savedID and not rs.eof
if Rs("LinkName") 〈> "" Then %>
insDoc(aux1, gLnk(0, "〈%= Rs("LinkName") %>", "〈%= Rs("LinkURL") %>"))
〈%
end if
Rs.MoveNext
if not rs.eof then currentID = Rs("ID")
Loop
End If
if currentID = "" then rs.movenext
Loop %>
〈/script>
〈script>
initializeDocument()
〈/script>
〈base target="basefrm">
〈title>〈/title>
〈/head>
〈body bgcolor="white">
〈/body>
〈/html>


lapple 2000-05-22
  • 打赏
  • 举报
回复
我也想利用ASP动态生成树控件,但用ASP实现不了(我不知怎么实现),只能用DCOM实现双方通信,客户端用一个树控件.
qiuhao 2000-05-10
  • 打赏
  • 举报
回复
<%@ Language=VBScript %>

<HTML>
<HEAD>

<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<base target="main">
<!-- #include File = "ErrCenter.asp"-->
<%

on error resume next
codetype = request.form("codetype")
if isnull(codetype)or codetype =0 then codetype =1
set FilmCon = session("FilmCon")

set myRs = Server.CreateObject ("ADODB.Recordset")
myRs.ActiveConnection = FilmCon
needRRe = request.form("needRRe")
'上次选中的节点
exnode = request.form("exnode")

set myR = Server.CreateObject ("ADODB.Recordset")
myR.ActiveConnection = FilmCon

myRs.Open "select * from TAB_ComCode where ID <>0 and Type ="&codetype&" order by Parent,ID"
DBConErrDo()
response.write "<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>"

response.write "function window_onload() {"

'第一次打开,不需要刷新(缺省);当数据改变,左右都需要提交时,需要刷新

if needRRe = "1" then

else
response.write "window.top.frames[2].location = ""blankc.htm"";"
end if

response.write "fpost.codetype.value = "&codetype&";"
response.write "codefrm.codetype.value = "&codetype&";"
if myrs.EOF then response.write "fpost.bAdds.disabled = false;"
needexnode ="0"
while not myRs.EOF
'needexnode = needexnode +trim("a"& myRs.Fields (1)&"%"&myRs.Fields (4))+"____"

if exnode="a"& myRs.Fields (1)&"%"&myRs.Fields (4) then
needexnode = "1"
end if
'response.write "alert(""a"& myRs.Fields (1)&"%"&myRs.Fields (4)&" "& exnode&""");"
if myRs.Fields ("Parent")=0 then
response.write "myTree.Nodes.Add (null,null,""a"& myRs.Fields (1)&"%"&myRs.Fields (4)&""","""&trim(myRs.Fields (2))&""");"
else
myr.Open "select * from TAB_ComCode where Type="&codetype &" and ID = "&myrs.Fields (3)
pinid = myr.Fields(4)
response.write "myTree.Nodes.Add (""a"& myRs.Fields (3)&"%"&pinid&""",4,""a"& myRs.Fields (1)&"%"&myRs.Fields (4)&""","""&trim(myRs.Fields (2))&""");"
myr.Close ()
end if
myRs.MoveNext ()
wend
'exnode = -1 不用展开

if not isnull(exnode) and exnode <>"" and exnode<>"-1" and needexnode ="1" then

response.write "myTree.Nodes("""&exnode&""").Selected = true;"
response.write "myTree.Nodes("""&exnode&""").Expanded= true;"
response.write "if ( myTree.Nodes("""&exnode&""").Parent==null) return false;"
response.write "myTree.Nodes("""&exnode&""").Parent.Expanded = true;"
response.write "if ( myTree.Nodes("""&exnode&""").Parent.Parent==null) return false;"
response.write "myTree.Nodes("""&exnode&""").Parent.Parent.Expanded = true;myTree.Nodes("""&exnode&""").Parent.Expanded = true;"
end if
response.write "}"

response.write "function getClickitemText(){"
response.write "return myTree.SelectedItem.Text"
response.write "}"

response.write "function getClickitemID(){"
response.write "s = myTree.SelectedItem.Key;"
response.write "return s.substring(1); "
response.write "}"

response.write "</script>"

%>
<SCRIPT LANGUAGE="JavaScript1.2" SRC="gfunc.js"></SCRIPT>
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>

<!--

var grade //选中节点的等级
function dd(){
alert("error");
return true;
}
function codetype_onchange() {
if (codefrm.codetype .value ==0 ) return false;
//fpost.target ="contents"
//fpost.action ="tree.asp"
//fpost.submit ();
codefrm.target ="contents"
codefrm.exnode .value ="-1";
//fpost.exnode .value ="-1";
codefrm.submit ()
}


function setnull()
{
fpost.nname .value ="";
fpost.nid .value ="0";
fpost.ninid .value ="0";
fpost.nchildren .value ="0" ;
fpost.npname .value ="";
fpost.op .value ="";
fpost.npid .value ="0";
fpost.ngrade .value ="0";
}

//同级代码
function bAdds_onclick(){
fpost.op.value = "Add"
fpost.opdesc .value ="请输入同级节点信息"
fpost.nname .value =""
fpost.ninid .value =""
fpost.maxid .value =fpost.smaxid .value
fpost.action ="treeedit.asp"
fpost.ngrade .value = grade

//第一次添加
if ((fpost.maxid .value =="") and and (fpost.maxid .value ==null))
{
fpost.maxid .value =100000
fpost.ngrade .value =1
fpost.submit ()
return -1
}
a = myTree.SelectedItem .Parent
fpost.npname .value=""
if (a!=null)
{
mykey = a.Key
fpost.npid .value = mykey.substring(1,mykey.indexOf("%"))
fpost.npname .value = a.text
}
else{
fpost.npid .value = 0
fpost.npname .value = "无"
}
fpost.submit ()
}

//添加下级节点
function bAddd_onclick(){
fpost.op.value = "Add"
fpost.nname .value =""
fpost.ninid .value =""
fpost.maxid .value =fpost.demaxid .value
fpost.opdesc .value ="请输入下级节点信息"
fpost.action ="treeedit.asp"

a = myTree.SelectedItem
mykey = a.Key
fpost.npid .value = mykey.substring(1,mykey.indexOf("%"))
fpost.npname .value = a.text
fpost.ngrade .value = grade +1

fpost.submit ()
}

function bUpdate_onclick(){
fpost.op.value = "Update"
fpost.opdesc .value ="请修改节点信息"
fpost.action ="treeedit.asp"
fpost.submit ()
}


function myTree_Click() {
if (myTree.SelectedItem ==null ) return -1;
//展开选中的节点
codefrm.exnode .value =myTree.SelectedItem.Key;
//fpost.exnode .value =myTree.SelectedItem.Key;

fpost.action = "treeedit.asp"
setnull();
fpost.nname.value = myTree.SelectedItem.Text;
fpost.op.value ="Display"
fpost.opdesc .value ="节点信息"

//分解id和inid
mykey = myTree.SelectedItem.Key.substring(1);
id = mykey.substring(0,mykey.indexOf("%"));

s = mykey.substring(mykey.indexOf("%")+1);

//删除空格
space = s.indexOf(" ");
if (space >=0)
s = s.substring(0,space);
inid=s;

fpost.nchildren.value = myTree.SelectedItem.Children;
fpost.nid.value = id;
fpost.ninid .value = inid;
a = myTree.SelectedItem .Parent

fpost.bDel.disabled = true;
fpost.bAddd.disabled =false;
fpost.bAdds.disabled =false;
fpost.bUpdate.disabled =false;
if (myTree.SelectedItem .Children <=0 )
{
fpost.bDel.disabled = false;
}

if (a != null)
{
fpost.npname.value = a.Text;
mykey = a.Key
fpost.npid .value = mykey.substring(1,mykey.indexOf("%"));
}
else{
fpost.npname.value = "无";
fpost.npid.value =null;
}

fpost.op.value = "Display";

//确定点中的节点级别
b = myTree.SelectedItem .FullPath;
grade = 1;

while ((b.indexOf("\\"))!= -1 )
{
grade = grade + 1;
b = b.substring (b.indexOf("\\")+1);
}
if (grade==3)
fpost.bAddd.disabled =true;
fpost.ngrade.value = grade;

////// 第一次添加节点
if (myTree.Nodes .Count ==0 )
{
fpost.nid .value ="100000";
//myTree.Nodes .Add (null,null,"a"+fpost.nid .value +"%"+fpost.ninid .value ,fpost.uname .value )
fpost.npid .value ="0";
//fpost.degrade .value ="0";
fpost.ngrade.value ="1";
fpost.maxid .value = 100000
//fpost.submit ()
return 0;
}

//判断要添加的节点是同级或者下级节点
fgrade = parseInt(fpost.ngrade .value );
smaxid = getmaxid(KeyToID(myTree.SelectedItem .LastSibling .Key) ,fgrade);

if (myTree.SelectedItem .Children >0)
demaxid = getmaxid(KeyToID(myTree.SelectedItem .Child.LastSibling .Key) ,fgrade+1);
if (myTree.SelectedItem .Children ==0)
demaxid = getmaxid(KeyToID(myTree.SelectedItem.Key) ,fgrade+1);

fpost.demaxid .value =demaxid;
fpost.smaxid.value = smaxid
//alert("s"+smaxid)
//alert("d"+demaxid)

/*
if (fpost.degrade .value =="0")
maxid = getmaxid(KeyToID(myTree.SelectedItem .LastSibling .Key) ,fgrade);
if ((fpost.degrade .value =="1")&&(myTree.SelectedItem .Children >0))
maxid = getmaxid(KeyToID(myTree.SelectedItem .Child.LastSibling .Key) ,fgrade);
if ((fpost.degrade .value =="1")&&(myTree.SelectedItem .Children ==0))
maxid = getmaxid(KeyToID(myTree.SelectedItem.Key) ,fgrade);
*/
/*
if ((grade == 1)&&(fpost.degrade .value =="0")) //添加根级代码
{
myTree.Nodes .Add (null,null,"a"+maxid+"%"+fpost.ninid .value,fpost.uname .value );
fpost.submit ();
return 0;
}
if (fpost.degrade .value =="0") //添加同级代码
myTree.Nodes .Add (myTree.SelectedItem .Key ,1,"a"+maxid+"%"+fpost.ninid .value ,fpost.uname .value );
if (fpost.degrade .value =="1")//添加下级代码
myTree.Nodes .Add (myTree.SelectedItem .Key ,4,"a"+maxid+"%"+fpost.ninid .value,fpost.uname .value );
*/
fpost.submit();

}


//del the left 0
function DelLeftZero(iid)
{
while ((iid.charAt(0) == "0") &&(iid.length >1))
iid = iid.substring(1);

if (iid == null) iid ="0"
if (iid =="") iid = "0"
return iid;
}

function getmaxid(nid,ngrade)
{
nid = parseInt(nid);
one = parseInt(nid/100000);

three = nid - parseInt(nid/1000)*1000;
two = parseInt((nid - one*100000 - three)/1000);
if (ngrade == 1)
return (one+1)*100000;

if (ngrade == 2)
return one *100000 + (two+1) *1000;

if (ngrade == 3 )
return nid +1;

return -1;
}

// from Key of treeview to ID of database
function KeyToID(iKey)
{
pos = iKey.indexOf("%");
return iKey.substring(1,pos);
}

function bDel_onclick() {
//test.target = "main";
i = window.confirm ("是否删除 "+myTree.SelectedItem.Text);
if (i)
{
fpost.nname .value = myTree.SelectedItem.Text
myTree.Nodes .Remove (myTree.SelectedItem .Index );

fpost.op.value = "Del";
fpost.target = "main"
fpost.action ="treesubmit.asp"
fpost.submit ();

fpost.bAddd .disabled = true;
fpost.bDel .disabled = true;
fpost.bAdds .disabled = true;
fpost.bUpdate.disabled = true;
}

}
/*
function bUpdate_onclick() {
test.target = "main";
fpost.op.value = "Update";
//if (fpost.ninid .value =="" ) fpost.ninid .value = "0";
myTree.SelectedItem .Text = fpost.uname .value ;
pos = myTree.SelectedItem .Key .indexOf("%");
oldid = myTree.SelectedItem .Key .substring(1,pos)
myTree.SelectedItem .Key = "a"+oldid+"%"+fpost.ninid .value ;

fpost.submit ();
}
*/
function bRefresh_onclick() {

codefrm.target = "contents";
fpost.op.value ="";
codefrm.submit ();


}

function degrade_onchange() {
fpost.bAdd .disabled =false;
if ((fpost.degrade .value =="1" )&&(grade ==3))
fpost.bAdd .disabled =true;
}



//-->
</SCRIPT>

<SCRIPT LANGUAGE=javascript FOR=myTree EVENT=Click>
<!--
myTree_Click()
//-->
</SCRIPT>
</HEAD>

<BODY LANGUAGE=javascript onload="return window_onload()" background="images/backgrand_I.jpg" >
<form name =codefrm action = "tree.asp" method = "post">
<SELECT id=codetype name=codetype style="HEIGHT: 21px; LEFT: 466px; TOP: 13px; WIDTH: 170px" LANGUAGE=javascript onchange="return codetype_onchange()" >

<%

set myRs1 = Server.CreateObject ("ADODB.Recordset")
myRs1.ActiveConnection = FilmCon
myRs1.Open "select Name from TAB_ComCode where Type =0"
DBConErrDo()

i =1
while not myrs1.EOF
response.write "<OPTION value = "&i&">"&myrs1.Fields (0)
i = i+1
myrs1.MoveNext ()
wend

myrs1.close()
%>
</SELECT>
<INPUT id=bRefresh name=bRefresh type=button value=" 刷新" style ="HEIGHT: 24px; WIDTH: 45px" LANGUAGE=javascript onclick="return bRefresh_onclick()">
<!--右边是否需要刷新,0--不需要; 1--需要 -->
<INPUT id=needRRe name=needRRe style=" VISIBILITY: hidden; WIDTH: 2px" value = "0">
<INPUT id=exnode name=exnode style="VISIBILITY: hidden;HEIGHT: 21px; WIDTH: 1px" value=<%=request.form("exnode")%> >
<INPUT id=needexnode name=needexnode style="VISIBILITY: hidden;HEIGHT: 21px; WIDTH: 1px" value=<%=needexnode%> >

</form>
<%
response.write "<OBJECT classid=clsid:0713E8A2-850A-101B-AFC0-4210102A8DA7 height=250 id=myTree style=""BACKGROUND-ATTACHMENT: fixed;HEIGHT: 250px; WIDTH: 260px;BACKGROUND-IMAGE: file:///D:/qiu/信得/bmp/Straw.jpg""; width=244><PARAM NAME=""_ExtentX"" VALUE=""6456""><PARAM NAME=""_ExtentY"" VALUE=""3784""><PARAM NAME=""_Version"" VALUE=""327682""><PARAM NAME=""HideSelection"" VALUE=""0""><PARAM NAME=""Indentation"" VALUE=""100""><PARAM NAME=""LabelEdit"" VALUE=""1""><PARAM NAME=""LineStyle"" VALUE=""1""><PARAM NAME=""PathSeparator"" VALUE=""\""><PARAM NAME=""Sorted"" VALUE=""0""><PARAM NAME=""Style"" VALUE=""7""><PARAM NAME=""BorderStyle"" VALUE=""0""><PARAM NAME=""Appearance"" VALUE=""1""><PARAM NAME=""MousePointer"" VALUE=""0""><PARAM NAME=""Enabled"" VALUE=""1""><PARAM NAME=""OLEDragMode"" VALUE=""0""><PARAM NAME=""OLEDropMode"" VALUE=""0""> <PARAM NAME=""ImageList"" VALUE=""straw.jpg""></OBJECT> "
%>

<form name ="fpost" action="treeedit.asp" method="post" >

<!--'正添加的节点是否当前节点的下级节点1:是下级节点0:不是下级节点-->
<INPUT id=bAdds language=javascript name=badds onclick="return bAdds_onclick()" type=button value=添加同级 disabled>
<INPUT id=bAddd language=javascript name=baddd onclick="return bAddd_onclick()" type=button value=添加下级 disabled>
<INPUT id=bDel language=javascript name=bDel onclick="return bDel_onclick()" type=button value=删除 disabled>
<INPUT id=bUpdate language=javascript name=bupdate onclick="return bUpdate_onclick()" type=button value=修改 disabled>
<INPUT id=nid name=nid style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 2px">
<INPUT id=ninid name=ninid style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 4px">
<INPUT id=nname name=nname style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 4px">
<INPUT id=npname name=npname style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 4px">
<INPUT id=nchildren name=nchildren style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 6px">
<INPUT id=op name=op style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 5px">
<INPUT id=opdesc name=opdesc style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 5px">
<INPUT id=ngrade name=ngrade style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 3px">
<INPUT id=npid name=npid style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 6px" value=0>
<INPUT id=codetype name=codetype style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 5px">
<INPUT id=smaxid name=smaxid style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 6px">
<INPUT id=demaxid name=demaxid style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 6px">
<INPUT id=maxid name=maxid style="HEIGHT: 21px; VISIBILITY: hidden; WIDTH: 6px" >

</form>
<!--
<form name = "test" action="tree.asp" method = "post">
<INPUT id=codetype name=codetype style="HEIGHT: 21px; VISIBILITY: hidden;WIDTH: 16px">
</form>
-->
</BODY>
</HTML>
small_wolf 2000-05-08
  • 打赏
  • 举报
回复
贴出来算了
xzou 2000-05-08
  • 打赏
  • 举报
回复
先谢谢king的热心帮助,不过那个菜单并不是我需要的树状菜单(就像资源管理器那种),而且要由数据库动态生成,关键难就难在动态生成。
qiujoe 2000-05-06
  • 打赏
  • 举报
回复
还有我,joe@qiu.com.cn
jaky 2000-05-01
  • 打赏
  • 举报
回复
我也想要一份,请发到我的信箱webm@sina.com
King 2000-04-28
  • 打赏
  • 举报
回复
发到你信箱了。

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧