<!-- #include file="../Function/OpenDataBase.asp" -->
<%
'递归显示树型目录 Function ListTree(ID,intBlank,intdopvalue)
On Error Resume Next
Dim Rs1,strRsSql,Rs2,strSubRsSql,intTemp
Dim strBlank
strBlank=""
For i=0 To Cint(intBlank)
strBlank=strBlank+"&nbsp;"
Next
Set Rs1=Server.CreateObject("Adodb.Recordset")
Set Rs2=Server.CreateObject("Adodb.RecordSet")
strRsSql="Select * From tbl_Tree Where I_Rank="&Cint(ID)
Rs1.Open StrRsSql,Conn,1,1
If Not(Rs1.EOF And Rs1.BOF) Then
i=1
Do While Not Rs1.EOF 
intTop=i*20
intLeft=Cint(intdopvalue)*10
strSubRsSql="Select * From tbl_Tree Where I_Rank="&Cint(Rs1("I_RecordID"))
intTemp=""
Rs2.Open strSubRsSql,Conn,1,1
If Not(Rs2.EOF And Rs2.BOF) Then
intSub=Rs2.RecordCount
If ID=0 Then
strId="div"&Rs1("I_RecordID")
strfun="DisplaySub('"&Rs1("I_RecordID")&"',"&intTop&","&intLeft&","&intSub&")"
Response.Write("<tr><td width=400><div id='"&strId&"' class='parent'><a href='#' onclick="&strfun&"><img src='./TreeImages/Line_pnode.gif' border=0></a><img src='./TreeImages/OpenediDefFolder.gif'><a href=javascript:gotoFunction('"&Rs1("I_RecordID")&"')>"&Rs1("C_Title")&"</a></div></td></tr>")
Call ListTree(Rs1("I_RecordID"),Cint(intBlank)+1,1)
Else 
strId="divchild"&ID&i
strfun="DisplaySub('"&Rs1("I_RecordID")&"',"&intTop&","&intLeft&","&intSub&")"
Response.Write("<tr><td><div id='"&strId&"' class='child'><img src='./TreeImages/Line_vertline.gif'>"&strBlank&"<a href='#' onclick="&strfun&" ><img src='./TreeImages/Line_pnode.gif' border=0></a><img src='./TreeImages/OpenediDefFolder.gif'><a href=javascript:gotoFunction('"&Rs1("I_RecordID")&"')>"&Rs1("C_Title")&"</a></div></td></tr>")
Call ListTree(Rs1("I_RecordID"),Cint(intBlank)+1,intdopvalue+1)
End If
Else
If ID=0 Then
strId="div"&Rs1("I_RecordID")
Response.Write("<tr><td width=400><div id='"&strId&"' class='parent'><img src='./TreeImages/Line_pnode.gif' border=0><img src='./TreeImages/OpenediDefFolder.gif'><a href=javascript:gotoFunction('"&Rs1("I_RecordID")&"')>"&Rs1("C_Title")&"</a></div></td></tr>")
Call ListTree(Rs1("I_RecordID"),Cint(intBlank)+1,1)
Else 
strId="divchild"&ID&i
Response.Write("<tr><td><div id='"&strId&"' class='subchild' ><img src='./TreeImages/Line_vertline.gif'>"&strBlank&"<img src='./TreeImages/Line_lastnode.gif'><img src='./TreeImages/iText.gif'><a href=javascript:gotoFunction('"&Rs1("I_RecordID")&"')>"&Rs1("C_Title")&"</a></div></td></tr>")
End If
End If

Rs2.Close()
i=i+1
Rs1.MoveNext()
Loop
ListTree=False
Else
ListTree=True
End If
Rs1.close()
Set Rs2=Nothing
Set Rs1=Nothing
End Function
%>
<%
Response.Buffer=true
Response.Clear()
On Error Resume Next
'读取数据库记录
Dim Rs,strRsSql,SubRs,strSubRsSql,strUserName,strTeacher
strUserName=Request.QueryString("username")
strTeacher=Request.QueryString("strTeacher")
Set Rs=Server.CreateObject("Adodb.Recordset")
Set SubRs=Server.CreateObject("Adodb.Recordset")
strRsSql="Select * From tbl_Tree Where I_Rank=0"
Rs.Open strRsSql,Conn,1,1

%>
<html>
<script id=clientEventHandlersJS language=javascript>
<!--
try{
NS4 = (document.layers) ? 1 : 0;
IE4 = (document.all) ? 1 : 0;
ver4 = (NS4|| IE4) ? 1 : 0;
}catch(e){
alert(e.description);
}
function window_onload() {}
function gotoFunction(strValue){
try{
self.parent.mainFrame.location.href="rightfile.asp?intID="+strValue;
}catch(e){
alert(e.description);
}
}

解决方案 »

  1.   

    function Display(){
    document.write("<style type='text/css'>");
    document.write(".parent{position:absolute;display:block}");
    document.write(".child{position:absolute;display:none}");
    document.write("</style>\n");
    }
    function DisplaySub(intValue,intTop,intLeft,intSub){
    try{
    if (!ver4) return;
    for(var i=1;i<=intSub;i++){
    if(IE4){
    objDiv1=eval("divchild"+intValue+i);
    if(objDiv1.style.display=="none"){
    objDiv1.style.display="block";
    //objDiv1.style.top=intTop+20*i;
    //objDiv1.style.left=intLeft+20;

    }else{
    objDiv1.style.display="none";
    }
    }else{
    objDiv1=eval("document.divchild"+intValue+i);
    if(objDiv1.visibility=="hide"){
    objDiv1.visibility="show";
    }else{
    objDiv1.visibility="hide";
    }
    arrange()
    }
    }
    }catch(e){
    alert(e.description);
    }
    }
    function arrange() {
        nextY = document.layers[firstInd].pageY +document.layers[firstInd].document.height;
        for (i=firstInd+1; i<document.layers.length; i++) {
            whichEl = document.layers[i];
            if (whichEl.visibility != "hide") {
                whichEl.pageY = nextY;
                nextY += whichEl.document.height;
            }
        }
    }
    function initIt(){
        if (!ver4) return;
        if (NS4) {
            for (i=0; i<document.layers.length; i++) {
                whichEl = document.layers[i];
                if (whichEl.id.indexOf("Child") != -1) whichEl.visibility = "hide";
           }
            arrange();
        }
        else {
            divColl = document.all.tags("DIV");
            for (i=0; i<divColl.length; i++) {
                whichEl = divColl(i);
                if (whichEl.className == "child") whichEl.style.display = "none";
            }
        }
    }
    function getIndex(el) {
        ind = null;
        for (i=0; i<document.layers.length; i++) {
            whichEl = document.layers[i];
            if (whichEl.id == el) {
                ind = i;
                break;
            }
        }
        return ind;
    }
    function  displaytreefunction(){
    if(displaytree.style.display="none")
    displaytree.style.display="block";
    else
    displaytree.style.display="none";
    }
    function teacher(strvalue){
    self.parent.mainFrame.location.href="teachermb.asp?strvalue="+strvalue;
    }onload = initIt;
    //-->
    </script><style type="text/css">
    .parent1{position:absolute;display:block}
    .child1{position:absolute;display:none}
    .subchild1{position:absolute;display:none}
    .rightmenu{position:absolute;display:none}
    </style><body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="return window_onload()">
    <div id="rightmenu" class="rightmenu" style="position:absolute;background-color=#ff00ff;">
    <table border="0" cellspacing="0" cellpadding="0">
    <tr><td><a href="add()">添加节点</a></td></tr>
    <tr><td><a href="">添加子节点</a></td></tr>
    <tr><td><a href="">删除节点</a></td></tr>
    <tr><td><a href="">编辑节点内容</a></td></tr>
    <tr><td><a href="">编辑节点标题</a></td></tr>
    <tr><td><a href="">上传节点内容</a></td></tr>
    </table>
    </div>
    <div style="position:absolute;left=0;top=0;width=104;height=84>
    <table border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="13%" valign="top"><img src="../../images/face/index1_r2_c1.gif" width="15" height="84"><img src="../../images/face/index1_r2_c2.gif" width="89" height="84"></td>
    </tr>
    </table>
    </div>
    <div style="position:absolute;left=10;top=20;width=100%;height=84>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td align="center">
    <table width="80%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>
      <%
    If Not(Rs.EOF And Rs.BOF) Then
    Response.Write("<table border=0 cellspacing=0 cellpadding=0>")
    Response.Write("<tr><td><img src='./TreeImages/Teacher.gif'><b>"&strUserName&"</b></td></tr>")
    Response.Write("<tr><td><img src='./TreeImages/iGenericAttribute.gif'><b><a href=javascript:teacher('mb')>教学目标</a></b></td></tr>")
    Response.Write("<tr><td><img src='./TreeImages/iGenericAttribute.gif'><b><a href=javascript:teacher('dg')>教学大纲</a></b></td></tr>")
    Response.Write("<tr><td><img src='./TreeImages/iGenericAttribute.gif'><b><a href='javascript:displaytreefunction()'>教学内容</a></b></td></tr>")
    Response.Write("<div id='displaytree'>")
    Call ListTree(Rs("I_Rank"),0,1)
    Response.Write("</div>")
    Response.Write("</table>")
      %>
      </td>
    </tr>
    </table>
     </td>
      </tr>
    </table>
    </div>
    </body>
    </html>
    <%
    Else
    Response.Write("aa")
    End If
    %>
      

  2.   

    唉 真麻烦 这样吧 源代码不想下载的看这里http://uheart.myetang.com/tree.txt解决就送500分,谢谢大家
      

  3.   

    记得偶曾经写过一个tree的代码,不过是纯客户端的,老兄那么长的代码给一个地址就可以了,你可以参考fason的代码,很不错的