• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    ajax+asp無限級分類樹型結構的代碼

    來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:52:38
    文檔

    ajax+asp無限級分類樹型結構的代碼

    ajax+asp無限級分類樹型結構的代碼: 代碼如下:<% '數(shù)據(jù)庫字段為類屬性,添加、刪除、修改、操作檢查等函數(shù)為類的方法 Class Cls_Leibie Private nClassID,sClassName,nParentID,sParentPath,nDepth,nRootID,nChild,nOrderID,sFilePath '定義私有變量(
    推薦度:
    導讀ajax+asp無限級分類樹型結構的代碼: 代碼如下:<% '數(shù)據(jù)庫字段為類屬性,添加、刪除、修改、操作檢查等函數(shù)為類的方法 Class Cls_Leibie Private nClassID,sClassName,nParentID,sParentPath,nDepth,nRootID,nChild,nOrderID,sFilePath '定義私有變量(

    代碼如下:
    <%
    '數(shù)據(jù)庫字段為類屬性,添加、刪除、修改、操作檢查等函數(shù)為類的方法
    Class Cls_Leibie
        Private nClassID,sClassName,nParentID,sParentPath,nDepth,nRootID,nChild,nOrderID,sFilePath '定義私有變量(類的屬性,即數(shù)據(jù)庫字段對應的變量)
        Private rs,sql,ErrorStr

        Private Sub Class_Initialize()
            ErrorStr=""                    '初始化錯誤信息為空
        End Sub

        Private Sub Class_Terminate()    '銷毀類時關閉數(shù)據(jù)庫連接
            If IsObject(Conn) Then 
                Conn.Close
                Set Conn = Nothing
            End If
        End Sub

    '*******************設置各個屬性******************************************************    
        Public Property Let ClassID(str)    '獲取類別ID(主鍵)
            nClassID=str
            call ClassProperty()            '獲取類別ID時調(diào)用此函數(shù)讀出類的所有屬性
        End Property
        Public Property Let ClassName(str)    '獲取類別名稱
            sClassName=str
        End Property

        Public Property Get ClassName
            ClassName=sClassName
        End Property

        Public Property Let ParentID(str)    '獲取類別父ID
            nParentID=str
        End Property

        Public Property Get ParentID
            ParentID=nParentID
        End Property

        Public Property Let ParentPath(str)    '獲取父路徑ID
            sParentPath=str
        End Property

        Public Property Get ParentPath
            ParentPath=sParentPath
        End Property

        Public Property Let Depth(str)        '獲取類別深度
            nDepth=str
        End Property

        Public Property Get Depth
            Depth=nDepth
        End Property

        Public Property Let RootID(str)        '獲取類別根ID
            nRootID=str
        End Property

        Public Property Get RootID
            RootID=nRootID
        End Property

        Public Property Let Child(str)        '子類別個數(shù)
            nChild=str
        End Property

        Public Property Get Child
            Child=nChild
        End Property

        Public Property Let OrderID(str)    '排序ID
            nOrderID=str
        End Property

        Public Property Get OrderID
            OrderID=nOrderID
        End Property
        Public Property Let FilePath(str)    '類別文件根目錄(生成靜態(tài)文件路徑,小站奇人異事網(wǎng)([url]www.guaishi.org[/url])用的是生成靜態(tài),故設置此字段)
            sFilePath=str
        End Property

        Public Property Get FilePath
            FilePath=sFilePath
        End Property    
    '******************************************************************************

        Private Sub ClassProperty()            '讀取類的所有屬性
            sql="select * from ArticleClass where ClassID="& nClassID
            set rs=conn.execute(sql)
            if not rs.eof then
                sClassName=trim(rs("ClassName"))
                nParentID=trim(rs("ParentID"))
                sParentPath=trim(rs("ParentPath"))
                nDepth=trim(rs("Depth"))
                nRootID=trim(rs("RootID"))
                nChild=trim(rs("Child"))
                nOrderID=trim(rs("OrderID"))
                sFilePath=trim(rs("FilePath"))
            end if
            set rs=nothing        
        End Sub

        Public Function FAddCheck()        '類別添加檢查函數(shù),結果為0表示通過檢查,為1表示有錯誤發(fā)生,有錯誤發(fā)生時退出函數(shù),將錯誤信息寫入錯誤變量ErrorStr
            dim temprs
            FAddCheck=0
            if sClassName="" then        '類名為空
                FAddCheck=1
                ErrorStr="類名不能為空!"
                exit Function
            else            
                if nParentID="" then        '父id為空
                    FAddCheck=1
                    ErrorStr="父id不能為空!"
                    exit Function
                else
                    if nParentID<>0 then
                        set temprs=conn.execute("select ClassID From ArticleClass where ClassID=" & nParentID)        '父類別不存在
                        if temprs.eof then
                            FAddCheck=1
                            ErrorStr="所屬類別不存在或已經(jīng)被刪除!"
                            exit Function
                        else
                            sql="select ClassID from ArticleClass where ClassName='"& sClassName &"' and ParentID="& nParentID        '類名重復
                            set rs=conn.execute(sql)
                            if not rs.eof then
                                FAddCheck=1
                                ErrorStr="類名重復!"
                                exit Function
                            end if
                            set rs=nothing
                        end if
                        set temprs=nothing
                    else
                        sql="select ClassID from ArticleClass where ClassName='"& sClassName &"' and ParentID="& nParentID        '類名重復
                        set rs=conn.execute(sql)
                        if not rs.eof then
                            FAddCheck=1
                            ErrorStr="類名重復!"
                            exit Function
                        end if
                        set rs=nothing    
                    end if
                end if
            end if
        End Function

        Public Sub SAdd()
            dim maxClassID,maxRootID
            set rs = conn.execute("select Max(ClassID) from ArticleClass")        '查找當前數(shù)據(jù)庫中最大的類別id,如果沒有數(shù)據(jù)則設置為0,要插入的類別id為當前最大id加1
            maxClassID=rs(0)
            if isnull(maxClassID) then
                maxClassID=0
            end if
            set rs=nothing
            nClassID=maxClassID+1
            set rs=conn.execute("select max(rootid) From ArticleClass")        '查找當前數(shù)據(jù)庫中最大的根id,如果沒有數(shù)據(jù)則設置為0,要插入的根id為當前最大根id加1
            maxRootID=rs(0)
            if isnull(maxRootID) then
                maxRootID=0
            end if
            nRootID=maxRootID+1
            set rs=conn.execute("select RootID,Depth,ParentPath,Child,OrderID From ArticleClass where ClassID=" & nParentID)    '查找父類別相應信息
            if not rs.eof then
                nRootID=trim(rs("Rootid"))        '根id與父類別根id相同
                sParentPath=trim(rs("ParentPath"))& "," &nParentID    
                if cint(trim(nParentID))>0 then            '父id大于0則有父類別,故要插入的類別的深度父類別的深度加1,父id不大于0則當前要插入的類別為根類別,則深度為0
                    nDepth=cint(trim(rs("Depth")))+1
                else
                    nDepth=0
                end if
                if cint(trim(rs("Child")))>0 then
                    dim rsPrevOrderID
                    '得到與本欄目同級的最后一個欄目的OrderID
                    set rsPrevOrderID=conn.execute("select Max(OrderID) From ArticleClass where ParentID=" & ParentID)
                    prevOrderID=rsPrevOrderID(0)
                    '得到同一父欄目但比本欄目級數(shù)大的子欄目的最大OrderID,如果比前一個值大,則改用這個值。
                    set rsPrevOrderID=conn.execute("select Max(OrderID) From ArticleClass where ParentPath like '" & ParentPath & ",%'")
                    if (not(rsPrevOrderID.bof and rsPrevOrderID.eof)) then
                        if not IsNull(rsPrevOrderID(0))  then
                             if rsPrevOrderID(0)>prevOrderID then
                                prevOrderID=rsPrevOrderID(0)
                            end if
                        end if
                    end if
                    set rsPrevOrderID=nothing
                end if
                nOrderID=prevOrderID+1
            else
                nOrderID=0
                sParentPath="0"
                nDepth=0
            end if
            set rs=nothing
            nChild=0
            sql="insert into ArticleClass (ClassID,ClassName,ParentID,ParentPath,Depth,RootID,Child,OrderID,FilePath) values ("& nClassID &",'"& sClassName &"',"& nParentID &",'"& sParentPath &"',"& nDepth &","& nRootID &","& nChild &","& nOrderID &",'"& sFilePath &"')"
            conn.execute(sql)
            if ParentID>0 then
            '更新其父類的子欄目數(shù)
                conn.execute("update ArticleClass set child=child+1 where ClassID="& nParentID)

            '更新該欄目排序以及大于本需要和同在本分類下的欄目排序序號
                if prevOrderID<>"" then
                    conn.execute("update ArticleClass set OrderID=OrderID+1 where rootid=" & nRootid & " and OrderID>"& prevOrderID &" and ClassID<>"& nClassID)
                end if
            end if
        End Sub
        Public Function FEditCheck()    '類別修改檢查函數(shù),結果為0表示通過檢查,為1表示有錯誤發(fā)生,有錯誤發(fā)生時退出函數(shù),將錯誤信息寫入錯誤變量ErrorStr
            dim temprs
            FEditCheck=0
            if nClassID="" then                    '類別id為空
                FEditCheck=1
                ErrorStr="類別id不能為空!"
                exit Function
            else                
                if sClassName="" then            '類名為空
                    FEditCheck=1
                    ErrorStr="類名不能為空!"
                    exit Function
                else
                    if nParentID<>0 then
                        set temprs=conn.execute("select ClassID From ArticleClass where ClassID=" & nParentID)        '父類別不存在
                        if temprs.eof then
                            FAddCheck=1
                            ErrorStr="所屬類別不存在或已經(jīng)被刪除!"
                            exit Function
                        else    
                            set rs=conn.execute("select ClassID from ArticleClass where ClassName='"& sClassName &"' and ClassID<>"& nClassID &"and ParentID="& nParentID)    
                            if not rs.eof then                '類名重復
                                FEditCheck=1
                                ErrorStr="類名重復!"
                                exit Function
                            end if
                            set rs=nothing
                        end if
                        set temprs=nothing
                    end if
                end if
            end if
        End Function

        Public Sub SEdit()        '類別修改
            sql="update ArticleClass set ClassName='"& sClassName &"',FilePath='"& sFilePath &"' where ClassID="& nClassID
            conn.execute(sql)
        End Sub

        Public Function FDeleteCheck()    '類別刪除檢查函數(shù),結果為0表示通過檢查,為1表示有錯誤發(fā)生,有錯誤發(fā)生時退出函數(shù),將錯誤信息寫入錯誤變量ErrorStr
            FDeleteCheck=0                '這里刪除沒有寫級聯(lián)刪除文章部分的代碼,刪除時應該級聯(lián)刪除
            if nClassID="" then
                FDeleteCheck=1
                ErrorStr="要刪除的類別id不能為空!"
                exit Function
            else
                set rs=conn.execute("select Child from ArticleClass where ClassID="& nClassID)
                if rs.bof and rs.eof then
                    FDeleteCheck=1
                    ErrorStr="類別不存在或者已經(jīng)被刪除!"
                    exit Function
                else
                    if trim(rs("Child"))>0 then
                        FDeleteCheck=1
                        ErrorStr="該類別含有子類別,請刪除其子類別后再進行刪除本類別的操作!"
                        exit Function
                    end if
                end if
            end if
        End Function

        Public Sub SDelete()
            if nDepth>0 then            '修改父id孩子數(shù)
                conn.execute("update ArticleClass set child=child-1 where child>0 and ClassID=" & nParentID)
            end if
            sql="delete from ArticleClass where ClassID="& nClassID
            conn.execute(sql)
        End Sub

        Public Function FErrStr()
            FErrStr=ErrorStr    
        End Function

    End Class
    %>

    核心js代碼 
    代碼如下:
    var xmlHttp; //定義一個全局變量
    var currentID=1;//設置當前選中ID,如果此ID不存在則會發(fā)生js錯誤
    //類別顯示主函數(shù)
    //cid--子類別所在層id
    //id --類別id
    //pid--[+]和[-]圖標id
    //fid--類別圖標id
    function DivDisplay(cid,id,pid,fid)
    {
        if (GetId(cid).style.display=='')    //子類別不顯示時圖標顯示控制
        {
            GetId(cid).style.display='none';
            GetId(pid).src = 'images/closed.gif';
            GetId(fid).src = 'images/folder.gif';
        }
        else        //展開子類別時的操作
        {
            GetId(cid).style.display='';
            GetId(pid).src = 'images/opened.gif';
            GetId(fid).src = 'images/folderopen.gif';
            if (GetId(cid).innerHTML==''||GetId(cid).innerHTML=='正在提交數(shù)據(jù)...')
            {
                GetId(cid).innerHTML='';
                ShowChild(cid,id);        //調(diào)用顯示子類別函數(shù)
            }
        }
    }
    //與上一個函數(shù)作用相同,只作用在最后一個類別
    function DivDisplay2(cid,id,pid,fid)
    {
        if (GetId(cid).style.display=='')
        {
            GetId(cid).style.display='none';
            GetId(pid).src = 'images/lastclosed.gif';
            GetId(fid).src = 'images/folder.gif';
        }
        else
        {
            GetId(cid).style.display='';
            GetId(pid).src = 'images/lastopen.gif';
            GetId(fid).src = 'images/folderopen.gif';
            if (GetId(cid).innerHTML==''||GetId(cid).innerHTML=='正在提交數(shù)據(jù)...')
            {
                GetId(cid).innerHTML='';
                ShowChild(cid,id);
            }
        }
    }
    //類別添加函數(shù)
    //id--類別id
    function ClassAdd(id){
    if (GetId("p"+id).src.indexOf("last")>0){    //最后一個類別時的添加操作
        if (!GetId("p"+id).onclick){
            GetId("p"+id).onclick=function (){DivDisplay2("c"+id,id,"p"+id,"f"+id);};    //為[+]和[-]添加單擊事件
            GetId("s"+id).ondblclick=function (){DivDisplay2("c"+id,id,"p"+id,"f"+id);};    //為顯示類別文字的span添加雙擊事件
            GetId("p"+id).src = 'images/lastopen.gif';
            }
        }
    else{
        if (!GetId("p"+id).onclick){    //不為最后一個類別的添加操作
            GetId("p"+id).onclick=function (){DivDisplay("c"+id,id,"p"+id,"f"+id);};
            GetId("s"+id).ondblclick=function (){DivDisplay("c"+id,id,"p"+id,"f"+id);};
            GetId("p"+id).src = 'images/opened.gif';
            }
        }
    GetId("c"+id).style.display='';
    ShowChild("c"+id,id);
    }
    //類別修改函數(shù)
    function ClassEdit(id,classname){
    GetId("s"+id).innerHTML=classname;
    }
    //有多個子類別的類別的刪除函數(shù)
    function ClassDel(id){
    ShowChild("c"+id,id);
    CurrentSelect(currentID,id)
    BrowseRight(id);
    }
    //只有一個子類別的類別的刪除函數(shù)
    function ClassDel1(id){
    if (GetId("p"+id).src.indexOf("last")>0){        //當類別是當前類別的最后一個類別時
        GetId("p"+id).style.cursor="cursor";        //設置圖標的鼠標經(jīng)過樣式
        GetId("p"+id).onclick=function (){};        //因為只有一個子類別刪除后就不再有子類別,故將圖標單擊事件修改為空函數(shù)
        GetId("s"+id).ondblclick=function (){};        //同上
        GetId("p"+id).src = 'images/lastnochild.gif';    //圖標設置
        }
    else{
        GetId("p"+id).style.cursor="cursor";        //非最后一個類別的刪除操作
        GetId("p"+id).onclick=function (){};
        GetId("s"+id).ondblclick=function (){};
        GetId("p"+id).src = 'images/nofollow2.gif';        //這里的圖標設置與前面不一樣
        }
    ShowChild("c"+id,id);
    CurrentSelect(currentID,id);
    BrowseRight(id);
    }
    //向右邊框架傳遞參數(shù)
    function BrowseRight(id){
    CurrentSelect(currentID,id);
    top.ContentFrame.location="../ArticleMain.asp?ClassID="+ id;
    }
    //設置類別選中狀態(tài)的函數(shù)
    function CurrentSelect(oldid,newid){
    currentID=newid;
    document.getElementById("s"+oldid).style.backgroundColor="white";
    document.getElementById("s"+currentID).style.backgroundColor="#C0C0E9";
    }
    //創(chuàng)建XMLHttpRequest對象
    function CreateXMLHttpRequest()
    {
        if (window.ActiveXObject)
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else
        {
            xmlHttp = new XMLHttpRequest();
        }
    }
    //Ajax處理函數(shù)
    //id,層id
    //rid,數(shù)據(jù)在表中的id
    function ShowChild(cid,id)
    {
        CreateXMLHttpRequest();
        if(xmlHttp)
        {
            xmlHttp.open('POST','child.asp',true);
            xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            var SendData = 'id='+id;
            xmlHttp.send(SendData);
            xmlHttp.onreadystatechange=function()
            {
               if(xmlHttp.readyState==4)
               {
                 if(xmlHttp.status==200)
                 {
                    GetId(cid).innerHTML = xmlHttp.responseText;
                 }
                 else
                 {
                    GetId(cid).innerHTML='出錯:'+xmlHttp.statusText;
                 }
               }
               else
               {
                    GetId(cid).innerHTML="正在提交數(shù)據(jù)...";
                }
              }

         }
         else
         {
             GetId(cid).innerHTML='抱歉,您的瀏覽器不支持XMLHttpRequest,請使用IE6以上版本!';
         }

    }
    //取得頁面對象
    //id,層id
    function GetId(id)
    {
        return document.getElementById(id);

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ajax+asp無限級分類樹型結構的代碼

    ajax+asp無限級分類樹型結構的代碼: 代碼如下:<% '數(shù)據(jù)庫字段為類屬性,添加、刪除、修改、操作檢查等函數(shù)為類的方法 Class Cls_Leibie Private nClassID,sClassName,nParentID,sParentPath,nDepth,nRootID,nChild,nOrderID,sFilePath '定義私有變量(
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲精品V欧洲精品V日韩精品| 成人精品视频一区二区三区| 中文字幕无码精品三级在线电影| 欧洲精品视频在线观看| 亚洲国产精品国产自在在线 | 国产精品美女久久久m| 久久久亚洲精品蜜桃臀| 成人国产精品动漫欧美一区| 99久久精品国产麻豆| 青青草原精品99久久精品66| 亚洲精品NV久久久久久久久久| 国产精品无码一区二区在线观一| 久久九九青青国产精品| 国产cosplay精品视频| 精品一区二区三区在线成人 | 99国产精品永久免费视频| 日韩精品一区二区三区中文| 青娱乐国产精品视频| 久久精品国产精品亚洲人人| 国产偷伦精品视频| 国产欧美日本亚洲精品一5| 国产精品毛片a∨一区二区三区| 久久最新精品国产| 亚洲精品高清久久| 白浆都出来了视频国产精品 | 国产精品亚洲欧美大片在线观看| 日韩欧国产精品一区综合无码| 国产日韩欧美精品| 国产精品久久久久天天影视| 潮喷大喷水系列无码久久精品| 国产精品无码av在线播放| 国产精品免费看久久久| 国产精品国产三级国产av品爱网| 精品国产乱码久久久久久1区2区| 精品久久久无码人妻中文字幕豆芽| 欧洲精品色在线观看| 精品免费人成视频app| 9久久9久久精品| 精品一区二区三区在线视频| 青青青青久久精品国产h| 亚洲欧美精品伊人久久|