频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 虚拟主机  域名注册     常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发设计技术教程 -> ASP教程 -> 实现树型结构(二)

实现树型结构(二)

作者:未知  来源:转载  发布时间:2005-7-27 16:23:55  发布人:acx

减小字体 增大字体


实现树型结构(第二部分)
作者:ACE      最后更新:06/08/2000      类别:原创

在上一部分,我们讨论了如何读取数据,并得到了表示层次关系的结果集。在这一部分,我们来看如何用脚本语言实现类似 MSDN 的界面。

可以在服务器端也可以在客户端完成这样的功能,这就要看需要了。在服务器端完成需要占用服务器的处理时间及相关资源,在客户端完成需要浏览器支持脚本语言(一般是 Javascript),并要下载执行脚本。

在我们的示例里采用客户端执行脚本的方法。

1. 将数据发送到浏览器

看下列代码:

Dim GetRSString
Dim cnn
Dim rs
Dim l_ID
l_ID = "1"      '表示根节点

Set cnn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
cnn.Open "Provider=SQLOLEDB;.......................略
rs.Open "sp_listfile " & l_ID,cnn

GetRSString = rs.GetString(2,,"?quot;","~~") 'adClipString
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing

Response.Write "<FORM id='rs' name='rs'>" &_
           "<INPUT type='hidden' id='rsCache' name='rsCache' value='" & GetRSString & "'></FORM>" &_
        "<script language=Javascript src='Listfile.js'></script>" &_
        "<script language=Javascript>LoadRecords(" + l_ID + ");</script>"

在上面的代码中,用 GetString 的方法得到了以 ?quot;和~~ 分隔的字符串,并用隐藏表单进行存储。 Listfile.js 里的脚本实现了我们想要得功能,LoadRecords 是其中的一个函数。

2. Listfile.js 中的脚本

这是全部代码:

function ToggleDisplay(oButton, oItems)
{
    if ((oItems.style.display == "") || (oItems.style.display == "none"))    {
        oItems.style.display = "block";
        oButton.src = book_open.src;
    }    else {
            oItems.style.display = "none";
            oButton.src = book_close.src;
    }
    
}
function LoadRecords(l_ID)    {
    var strRecords=document.all("rsCache").value;
    var arrRecords=strRecords.split("~~");
    var arrFields;
    var Current_level;
    var Current_ID;
    var strTemp;
    var strList;
    var Prior_ID;
    var Prior_level=-1;
    var i;
    var j;
    Prior_ID=l_ID;
    strList = "<TABLE><TR><TD height=300 valign=top class=Newscontents><!--" + l_ID + "-->";
    for (i=0;i<arrRecords.length;i++)    
    {
        arrFields=arrRecords[i].split("?quot;");
        Current_level = arrFields[0];
        Current_ID = arrFields[1];
        if (arrFields[2] == 0)
        {
            strTemp = "<DIV><IMG SRC='images/plus.gif' ID='i_" + Current_ID +
                    "' onclick='ToggleDisplay(i_" + Current_ID + ",f_" +
                    Current_ID + "_d);' width=31 height=15 style='position:relative;left:" +
                    (Current_level*17) + ";top:3;cursor:hand;'> <A ID='f_" + Current_ID +
                    "' style='position:relative;left:" + (Current_level*17) +
                    ";cursor:hand;' onclick='ToggleDisplay(i_" + Current_ID + ",f_" +
                    Current_ID + "_d);'>" + arrFields[3] + "</A></DIV><DIV ID='f_" +
                    Current_ID + "_d' style='display: none;'><!--" + Current_ID + "--></DIV>";
            if (Current_level > Prior_level)    
            {
                strTemp += "<!--LEVEL" + Current_level + "-->";
                strList = strList.replace("<!--" + Prior_ID + "-->",strTemp);
            }
            else    
            {
                if (Current_level == Prior_level)    
                {
                    strTemp += "<!--LEVEL" + Current_level + "-->";
                    strList = strList.replace("<!--LEVEL" + Current_level + "-->",strTemp );
                }
                else
                {
                    for (j=parseInt(Current_level)+1;j<=Prior_level;j++)    
                    {
                        strList = strList.replace("<!--LEVEL" + i + "-->","")
                    }
                    strTemp += "<!--LEVEL" + Current_level + "-->";
                    strList = strList.replace("<!--LEVEL" + Current_level + "-->",strTemp );
                }
            }
        }
        else    
        {
            strTemp = "<DIV><IMG SRC='images/message.gif' width=11 height=14  style='position:relative;left:" +
            (Current_level*17+20) + ";top:2;cursor:hand;'>  ";
            strTemp += "<A ID='f_" + Current_ID + "' HREF='page.asp?article=" + arrFields[3] +
            "' TARGET=MAIN style='position:relative;left:" + (Current_level*17 +16) +
            ";cursor:hand;'>" + arrFields[3] + "</A></DIV><!--LEVEL" + Current_level + "-->";
            if (Current_level > Prior_level)
                strList = strList.replace("<!--" + Prior_ID + "-->",strTemp);
            else
                strList = strList.replace("<!--LEVEL" + Current_level + "-->",strTemp);
        }
    
        Prior_ID = Current_ID;
        Prior_level = Current_level;
    }
    strList += "</TD></TR><TR><TD height=10><img style='display:none;' " +
        "src='images/plus.gif' id=book_close><img style='display:none;' " +
        "src='images/minus.gif' id=book_open> </TD></TR></TABLE>";
document.write(strList);
}


终于写完了,大家自己看吧,如果你有更好的主意别望了告诉我。


原作者:不详
来 源:不详


[打 印]
[] [返回上一页] [收 藏]
上一篇文章:实现树型结构(一)
下一篇文章:使用@IDENTITY
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 头像-qq头像(qq新头像)4..
· 注册码大全十
· 注册码大全三
· 让你轻松架设FTP服务器1..
· 梦幻背景图片7
· 卡通动物图片6
· 风景图片8
· 网页制作素材-按钮素材2..
· 注册码大全九
· 让你轻松架设FTP服务器5..
· 50MB免费空间 FTP PHP M..
关注此文读者还看过
· 有趣的Flash鼠标跟随效果..
· 安全专家发现垃圾电邮已..
· ADO连接数据库字符串大全..
· 百度想国内上市 有法律障..
· XML+SQL=数据库的未来?..
· 如何注册组件
· 军事武器图片1
· 十天学会ASP.net之第八天..
· 阿里妈妈实战(1) 现在开..
· 用php来检测proxy
· 台湾中华电信将与Google..
· 一个提供用户输入时期的..
· PC之家50M/ASP和100M静态..
· 一个获得随机字符串的as..
· 墙面的效果研究
· php通用检测函数集(5)
相关文章
· 实现树型结构(一)
· 蛙蛙推荐:asp实现树型结构
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
免责申明:中国建站之家(www.jz123.cn)上的所有提供下载的软件和资源
均来源于网络,为软件或程序作者提供和网友推荐收集整理而来,仅供学习
和研究使用。如有侵犯你的版权,请立即联系我们,本站将在3个工作日内删除。
粤ICP备05092265号