亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 實現(xiàn)樹型結(jié)構(gòu).txt

?? 用純ASP代碼實現(xiàn)圖片上傳并存入數(shù)據(jù)庫中
?? TXT
字號:
實現(xiàn)樹型結(jié)構(gòu)(一)    


--------------------------------------------------------------------------------

 【小菁】 于 00-6-9 上午 09:57:57 加貼在 Joy ASP ↑:

實現(xiàn)樹型結(jié)構(gòu)(第一部分)
作者:ACE      最后更新:06/08/2000      類別:原創(chuàng)

先看一下示例,如果你感覺尚可,就繼續(xù)閱讀本文http://www.coolbel.com/ace/articles/test/msdn.asp。

1. 簡述

對于大家來說樹型結(jié)構(gòu)是很熟悉的一種模型。它的應(yīng)用十分廣泛,比如組織結(jié)構(gòu),物料清單,資料檔案管理,資產(chǎn)管理等等都是以樹型結(jié)構(gòu)為基礎(chǔ)。在現(xiàn)實生活中,有許多事物可以抽象為樹狀結(jié)構(gòu)。這種結(jié)構(gòu)可以簡化對某些事物的理解,使概念清晰。

2. 表結(jié)構(gòu)

樹型結(jié)構(gòu)的表結(jié)構(gòu)可以很簡單也可以很復(fù)雜。根據(jù)不同的需求,表結(jié)構(gòu)不是一成不變的,讀取數(shù)據(jù)的方法也不盡相同。

我們考慮一種最簡單的情況,看下面的示例:

Sample Table
Child Node        Parent Node           Title              article
     1                 0                  Program                 0
     2                 1                Visual Basic              0
     3                 1                Power Builder             0
     4                 1                 C++ Builder              0
     5                 2                 ADO Control              1
     ..........
更直觀的表示:
Program
   |-------Visual Basic
   |            |------------ADO Control
   |-------Power Builder
   |-------C++ Builder

這種結(jié)構(gòu)十分簡單,當(dāng)修改元素間的所屬關(guān)系時,你只需要修改 Parent Node 就可以了,比如把 ADO Control 作為 Program 的子項,只要將 ADO Control 所對應(yīng)的 Parent Node 改為1。由此,不難看出這種結(jié)構(gòu)簡單,易用。

3. 用存儲過程讀取數(shù)據(jù)

如何檢索數(shù)據(jù),或許是我們最關(guān)心的。對于用戶來說,在數(shù)據(jù)的表達(dá)上要易于理解。從上面的示例中,就可以看出:直觀的表示法比顯示數(shù)據(jù)存儲結(jié)構(gòu)更易于理解。

其中的關(guān)鍵在于如何得到元素之間的層次關(guān)系,有了層次關(guān)系,就能得到類似資源管理器那樣的界面。

在這里,我們用存儲過程完成該功能。在微軟的眾多有關(guān) SQL 的文檔中,有一段 SQL 代碼非常經(jīng)典,我們本著拿來主義的思想,將它修改一下,洋為中用。

CREATE PROC sp_ListFile(@Child_node int)
As
SET NOCOUNT ON
--declare var
DECLARE @lvl smallint          --層次關(guān)系
DECLARE @c_ID int
DECLARE @article bit           --是否為文章的標(biāo)志
DECLARE @title varchar(150)    --標(biāo)題

--create temporary table 
CREATE TABLE #stack (Child_node int,Lvl smallint)

--create target table
CREATE TABLE #FileList
(lvl smallint,
Child_node_ID int,
Article bit,
Title varchar(150) )

--initial
INSERT INTO #stack VALUES(@Child_node,0)
SELECT @Lvl = 0

--main loop
WHILE @Lvl > -1
BEGIN
   IF EXISTS(SELECT * FROM #stack WHERE Lvl = @Lvl)
   BEGIN
      SELECT @Child_node = Child_node
      FROM #stack
      WHERE Lvl = @Lvl

      SELECT @article = article,@title = title
      FROM some_table
      WHERE Child_node = @Child_node

      INSERT INTO #FileList
      VALUES(@Lvl,@Child_node, @article,@title)

      DELETE FROM #stack
      WHERE Lvl = @Lvl AND Child_node = @Child_node

      INSERT INTO #stack
            SELECT Child_node,@Lvl + 1
         FROM some_table
         WHERE Parent_node = @Child_node
      IF @@ROWCOUNT > 0
     SELECT @Lvl = @Lvl + 1
   END
   ELSE
      SELECT @Lvl = @Lvl - 1
END
DELETE FROM #FileList
WHERE Lvl = 0
SELECT * FROM #FileList

輸出結(jié)果:
lvl           Child_node          Article              Title            
   1             1                   0                    Program
   2             2                   0                    Visual Basic
   3             5                   1                    ADO Control
   2             3                   0                    Power Builder
   2             4                   0                    C++ Builder

上面的存儲過程可以有很多變形,比如按時間排序,指定檢索深度等等,有的需要對數(shù)據(jù)庫作相應(yīng)調(diào)整。

4. 調(diào)用存儲過程


調(diào)用存儲過程有多種形式,我們只討論如何調(diào)用上面的存儲過程

Dim cnn
Dim rs
Dim id

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


由于 Coolbel 不支持存儲過程,我把結(jié)果集存為 XML 格式,以便于演示。



實現(xiàn)樹型結(jié)構(gòu)(二)    


--------------------------------------------------------------------------------

 【小菁】 于 00-6-9 上午 10:00:27 加貼在 Joy ASP ↑:

實現(xiàn)樹型結(jié)構(gòu)(第二部分)
作者:ACE      最后更新:06/08/2000      類別:原創(chuàng)

在上一部分,我們討論了如何讀取數(shù)據(jù),并得到了表示層次關(guān)系的結(jié)果集。在這一部分,我們來看如何用腳本語言實現(xiàn)類似 MSDN 的界面。

可以在服務(wù)器端也可以在客戶端完成這樣的功能,這就要看需要了。在服務(wù)器端完成需要占用服務(wù)器的處理時間及相關(guān)資源,在客戶端完成需要瀏覽器支持腳本語言(一般是 JavaScript),并要下載執(zhí)行腳本。

在我們的示例里采用客戶端執(zhí)行腳本的方法。

1. 將數(shù)據(jù)發(fā)送到瀏覽器

看下列代碼:

Dim GetRSString
Dim cnn
Dim rs
Dim l_ID
l_ID = "1"      '表示根節(jié)點

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;和~~ 分隔的字符串,并用隱藏表單進(jìn)行存儲。 Listfile.js 里的腳本實現(xiàn)了我們想要得功能,LoadRecords 是其中的一個函數(shù)。

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);
}


終于寫完了,大家自己看吧,如果你有更好的主意別望了告訴我。

 


http://www.coolbel.com/ace/



--------------------------------------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产免费久久| 日韩一区二区高清| 国产午夜久久久久| 亚洲激情成人在线| 成人黄色大片在线观看| 日韩精品一区二区三区老鸭窝| 亚洲精品视频在线观看免费| 国产一区二区三区美女| 欧美日韩国产美| 亚洲欧美日韩电影| 成人sese在线| 久久理论电影网| 久久国产麻豆精品| 欧美日韩精品一区二区三区| 亚洲精品综合在线| 国产精品欧美经典| 91精品国产综合久久久久| 欧美日韩一区二区在线视频| 国产精品久久国产精麻豆99网站| 蜜臀av性久久久久av蜜臀妖精| 欧美综合在线视频| 亚洲免费伊人电影| 夜夜嗨av一区二区三区中文字幕| 日本vs亚洲vs韩国一区三区二区 | 男男视频亚洲欧美| 日本韩国欧美一区二区三区| 久久精品亚洲乱码伦伦中文| 欧美在线一区二区| 亚洲黄一区二区三区| 一本久久精品一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 国产又黄又大久久| 久久精品欧美一区二区三区麻豆| 毛片av一区二区| 日韩视频免费直播| 韩国成人福利片在线播放| 欧美成人一区二区三区| 午夜精品福利视频网站| 欧洲亚洲国产日韩| 亚洲一区二区免费视频| 精品视频在线免费观看| 亚洲国产一区二区视频| 在线观看不卡视频| 亚洲妇女屁股眼交7| 日本韩国一区二区三区视频| 亚洲欧美一区二区久久 | 亚洲少妇中出一区| 99国产精品99久久久久久| 中文字幕中文字幕一区二区| 91在线高清观看| 亚洲一区二区三区美女| 欧美日韩久久一区| 青娱乐精品视频在线| 制服丝袜激情欧洲亚洲| 另类成人小视频在线| 精品国产髙清在线看国产毛片| 久久精品国产一区二区| 久久精品一区四区| aaa国产一区| 亚洲在线视频网站| 7777精品伊人久久久大香线蕉完整版 | 蜜臀av一级做a爰片久久| 久久综合色天天久久综合图片| 国产精品一级在线| 亚洲国产高清aⅴ视频| 91麻豆高清视频| 爽爽淫人综合网网站| 欧美精品一区二区三区蜜桃| 国产精品18久久久久久久久 | 国产清纯白嫩初高生在线观看91 | 91亚洲永久精品| 亚洲国产一区二区在线播放| 欧美一区二区三区视频免费| 国内久久婷婷综合| 日韩美女久久久| 欧美喷潮久久久xxxxx| 久久99国产精品久久| 国产精品电影一区二区| 欧美日韩视频第一区| 国产一区欧美日韩| 亚洲欧美日本韩国| 日韩一二三区不卡| 成人av在线网站| 午夜av区久久| 欧美高清在线视频| 欧美视频在线一区二区三区| 看片网站欧美日韩| 亚洲人成精品久久久久| 91精品国产丝袜白色高跟鞋| 国产一区二区91| 一个色综合av| 久久久久国产精品麻豆| 欧洲一区在线观看| 国产精品99精品久久免费| 一区二区高清视频在线观看| 精品噜噜噜噜久久久久久久久试看| av午夜一区麻豆| 青青草国产成人av片免费| 国产精品久久免费看| 在线不卡a资源高清| 成人精品国产一区二区4080| 亚洲大尺度视频在线观看| 日本一区二区不卡视频| 欧美一区二区三区系列电影| 91视频你懂的| 激情综合网激情| 亚洲国产精品久久久久秋霞影院 | 欧美国产日韩亚洲一区| 制服丝袜中文字幕亚洲| 99riav一区二区三区| 激情综合一区二区三区| 亚洲成人av资源| 亚洲日本中文字幕区| 久久综合九色欧美综合狠狠 | 国产成人精品一区二区三区四区 | 不卡视频在线观看| 美女被吸乳得到大胸91| 依依成人精品视频| 国产精品视频免费看| 精品乱人伦小说| 欧美日韩高清在线播放| 99这里都是精品| 国产二区国产一区在线观看| 日韩电影在线免费看| 亚洲欧美激情一区二区| 中日韩免费视频中文字幕| 欧美精品一区二区在线观看| 欧美精品九九99久久| 在线观看成人小视频| 99精品国产91久久久久久| 国产精品资源在线看| 久久国产日韩欧美精品| 日本中文字幕一区二区有限公司| 亚洲一级二级在线| 亚洲区小说区图片区qvod| 中文字幕精品三区| 久久久另类综合| www国产精品av| 欧美电视剧免费观看| 日韩片之四级片| 欧美一区二区三区小说| 制服丝袜亚洲色图| 777奇米四色成人影色区| 欧美美女直播网站| 欧美三级在线看| 欧美中文字幕一二三区视频| 色欧美乱欧美15图片| 色狠狠av一区二区三区| 色综合久久久久网| 色婷婷国产精品久久包臀| 91在线视频18| 91网页版在线| 在线观看一区二区视频| 色婷婷亚洲一区二区三区| 91视频91自| 色婷婷精品大视频在线蜜桃视频| 色婷婷久久久综合中文字幕| 一本色道久久综合狠狠躁的推荐| 91老师国产黑色丝袜在线| 91久久香蕉国产日韩欧美9色| 91成人国产精品| 欧美日韩精品二区第二页| 在线不卡免费av| 欧美电影免费观看完整版| 久久嫩草精品久久久精品| 国产片一区二区三区| 自拍偷拍欧美激情| 一区二区在线电影| 亚洲国产中文字幕| 日本视频在线一区| 久久国产乱子精品免费女| 国产乱码精品一品二品| 成人精品免费视频| 色综合天天综合| 欧美日韩精品专区| 日韩免费视频线观看| 国产日本亚洲高清| 亚洲三级在线免费观看| 亚洲高清视频的网址| 免费高清视频精品| 国产盗摄一区二区三区| 91麻豆123| 91精品国产福利| 久久久99免费| 亚洲欧美乱综合| 日韩av二区在线播放| 国产盗摄一区二区| 在线欧美小视频| 欧美一级久久久久久久大片| 久久久www成人免费无遮挡大片| 专区另类欧美日韩| 欧美aⅴ一区二区三区视频| 国产精品资源在线| 日本精品免费观看高清观看| 日韩一级欧美一级| 中文字幕色av一区二区三区| 亚洲高清视频在线| 国产在线一区二区| 在线一区二区三区做爰视频网站| 欧美一区二区性放荡片|