数据库好办,但是你的树结果建议你一次读取,cache在文件系统上。千万不要每次都去生成(会死的~~)

解决方案 »

  1.   

    做连数据库的树用Jtree相对来说容易些
    字段:类别号,类别名,级别(代表第几层),上级类别,明细标志(是明细就不准再加子菜单)
      

  2.   

    to  nanman(南蛮) 能不能講講你的實現方法?這個問題困扰我很久了,很需要你的幫助,拜托了,我有2000可用分,問題解決了都給你也沒問題!
      

  3.   

    to ah__fu(阿福)我要的是從數据庫里面讀出數据生成的,有沒有好的解決辦法?
      

  4.   

    to  nanman(南蛮)能不能把代碼發到我的信箱:[email protected].謝謝了!
      

  5.   

    to  nanman(南蛮) :
       请给大家一个好的解决办法!!!
        e-mail:[email protected]
      

  6.   

    http://expert.csdn.net/Expert/topic/1348/1348697.xml?temp=.5031549
    不限级的.
      

  7.   

    xiaofenguser(风雨)先生:
         请模块化整理整理!!!
      

  8.   

    我将进行这个主题的讲座,请注意csdn的最新文档
      

  9.   

    1:使用bean或是taglib 
    2:树得生成本质上是通过生成无框的表格<table> 来实现的
    3: 树面临两个问题  
             a:数据动态更新 需要每次重新生成效率低;
             b:数据不许要动态更新 效率高 (适用于目录等的生成)     
    4:建议不使用树来表现数据分层 (web上)
      

  10.   

    你设计数据库可以用一个字段来区别:比如:树的第一级为:01000000,第二级为:01010000,如此类推,就可以判断树结构,一次从数据库中取出
    E_mail:[email protected]
      

  11.   

    to xiaofenguser(风雨) :你的(http://expert.csdn.net/Expert/topic/1348/1348697.xml?temp=.5031549
    不限级的.)有问题???请详细讲,最好是调一调!
      

  12.   

    to wkrain(花土沟的骆驼刺) :
       请你出来讲一讲!!
      

  13.   

    致 net_lover(孟子E章) ( ):能不能順便講一下如何盡量精确的統計在線用戶列表.謝謝!
      

  14.   

    致 net_lover(孟子E章) ( ):应该给大家将这个作为专题说一说吧,呵呵。
      

  15.   

    其实这个不难,你需要关注两个问题  
                    1:树的显示 通过生成层次表格来模拟,就是说你所显示的树是一端迭代打印的 html代码  如: <tr><td>a</td><td></td></tr>
                              <tr><td></td><td>b</td></tr>              
                           <tr><td></td><td>c</td></tr>                                就出现两极结构树        --a
                                                ---b
                                                ---c
          2:数据分层问题 可有多种解决方法,具体自己掌握,
    兄弟到是有原代码,可是在公司拿不出来 ,抱歉
      

  16.   

    象资源管理器这样的树我用纯HTML已经实现,现在遇到的问题是如何把树的结构一次从数据库里面读出来,也就是说怎么把节点递归到末梢?
      

  17.   

    to wkrain(花土沟的骆驼刺) 
    你说的太简单了吧,其实要牵涉到很多东西,比如单击某节点,向某页传递参数、变色,以及通过数据库添加同级、子级、删除子级等等,而且,JAVASCRIPT又不能操作数据库,必须通过JAVA或者JSP来配合操作,你的提示太少了吧。
      

  18.   

    我寫的一個最精煉(我見過的)的無限層樹狀﹐樓主別吃言哦﹐沒500分200分也滿足了。<Script Language="JavaScript">
    //功能﹕無限層樹狀
    //作者﹕liuzxit
    //完成日期﹕2003/1/8
    //在IE5.5環境下測試通過
    var strStyle='<style type="text/css">'
    strStyle+='span.SelectIng{color:#ff00ff;border:solid 1pt #666666;padding:0.5pt;height:4px;background-color:#cccccc;}'
    strStyle+='span.NoSelect{color:#000084;border:solid 1pt #ffffff;padding:0.5pt;height:4px;background-color:#ffffff;}'
    strStyle+='span.SelectEd{color:#D02090;border:solid 1pt #888888;padding:0.5pt;height:4px;background-color:#f3f3f3;}'
    strStyle+='</style>'
    document.write(strStyle)var myRs=new Array(), selectItem;
    function compare(a,b) {return parseInt(a[1]) - parseInt(b[1])}
    function InsertItem(s){myRs[myRs.length++] = s.split(/,/);}function ExCloAll(n){
    var d=document.all('0'), e=d.all.tags('div')
    for (i=0;i<e.length;i++)e[i].style.display=(n==1?'block':'none')
    e=d.all.tags('p')
    for (i=0;i<e.length;i++){if(ChkExist(e[i].children[1].value))e[i].children[0].innerText=(n==1?'- ':'+ ')}
    }function ExCloItem(){
    var c,e=event.srcElement, p=e.parentElement.children
    if(selectItem!=null)selectItem.className='NoSelect';
    e.className='SelectEd'
    selectItem=event.srcElement;
    if(c=document.all(e.value)){
    p[0].innerText=(p[0].innerText=='+ '?'- ':'+ ')
    c.style.display=(c.style.display=='none'?'block':'none')
    }else{p[0].innerText='- '}
    }
    function ExCloItem2(){
    var c,e=event.srcElement, p=e.parentElement.children
    if(c=document.all(p[1].value)){
    e.innerText=(e.innerText=='+ '?'- ':'+ ')
    c.style.display=(c.style.display=='block'?'none':'block')
    }else e.innerText='- '
    }function OutItem(){
    var e=event.srcElement
    if(selectItem != '')e.className=(selectItem==e?'SelectEd':'NoSelect')
    else e.className='NoSelect'
    }function ChkExist(n){
    n=parseInt(n)
    if((n<myRs[0][1])||(n>myRs[myRs.length-1][1]))return false
    var a,b,c,x=0, y=parseInt(myRs.length/2), z=myRs.length-1
    while((x!=y)&&(y!=z)){
    a=myRs[x][1], b=myRs[y][1], c=myRs[z][1]
    if(n==a||n==b||n==c)return true
    if(n>b)x=y;
    else z=y;y=parseInt(x+z);
    y=parseInt((x+z)/2);
    }
    return false
    }function drawTree(n){
    if(n==0){
    myRs.sort(compare)
    document.write('<p style="font:10pt;cursor:hand;"><span onclick="ExCloAll(1)">全部展開</span>&nbsp;&nbsp;<span onclick="ExCloAll(0)">全部合攏</span></p>')
    }
    if (ChkExist(n)!=true)return
    document.write('<div id="'+n+'" style="font:10pt;cursor:hand;'+(n!=0?'position:relative;left:20;display:none;':'')+'">')
    for(var i=0;i<myRs.length;i++){
    if (parseInt(myRs[i][1])>n)break;
    if (myRs[i][1]==n){
    document.write('<p style="margin:0pt;"><span style="vertical-align:top;" onclick="ExCloItem2()">'+(ChkExist(myRs[i][0])?'+ ':'- ')+'</span>')
    document.write('<span onclick="ExCloItem()" value="'+myRs[i][0]+'" class="NoSelect" onmouseout="OutItem()" onmouseover="this.className=\'SelectIng\'">'+myRs[i][2]+'</span></p>')
    drawTree(myRs[i][0])
    }
    }
    document.write('</div>')
    }
    //InsertItem用法﹕第一個數字為自己的ID號﹐第二個為父層的ID號﹐后面的可隨便加減項次以作它用﹐以下語句加入的順序不限
    InsertItem('1,0,根目錄1')
    InsertItem('11,1,子目錄1')
    InsertItem('111,11,孫目錄1')
    InsertItem('1111,111,曾孫目錄')
    InsertItem('11111,1111,玄孫目錄')
    InsertItem('12,1,子目錄2')
    InsertItem('2,0,根目錄2')
    InsertItem('21,2,子目錄A')
    InsertItem('22,2,子目錄B')
    InsertItem('3,0,根目錄3')
    //如果跟數據庫結合﹐可通過ASP或其它后端腳本生成以上InsertItem語句drawTree(0)
    </Script>
      

  19.   

    再閱讀一下樓上各位的發言補充一下
    建議不要用TABLE因為這樣會加重服務器的負擔﹐速度也慢
    也沒必要用層吧﹐看我上面的樣式足夠定位了
    如果要把+和-號換成圖標只需稍做改動即可﹐以上代碼修改也不多
    但如果要加線條這個比較麻煩﹐我也懶得考慮了
    至于增刪節點可通過replace即可﹐當初漏考慮了
      

  20.   

    数据库设计:有几个关键字段
    id,parentId,childCount比较重要,这样做起来比较方便
      

  21.   

    我刚整理了一个动态树,大家可以去下面地址下载:
    http://www.ldbz.xs.zj.cn/tree/tree2.zip
      

  22.   

    致 xiaofenguser(风雨) :你那個東東報空指針的錯誤...
      

  23.   

    sorry,我整理过后就没有再测试,原来是把一个类给删了.留了一个.bak在上面,现在重新上传了一次,请重新下载!
      

  24.   

    還是不行啊,老大...我用的是win2000+jdk1.3+resin
      

  25.   

    倒,我也没用replaceAll这些1.4的东西呀,你的提示是什么?
      

  26.   

    sorry,我重新下载试用,一切正常.
    我的配置:win2000+jdk1.4+resin2.1.5+access(未知版本)
      

  27.   

    給你看看報的錯誤吧:
    右邊幀:
    java.lang.NullPointerException
    at _jsp._tree2._part._ctr._part_0util__jsp._jspService(/tree2/part/ctr/part_util.jsp:94)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:87)
    at com.caucho.jsp.JavaPage.subservice(JavaPage.java:81)
    at com.caucho.jsp.Page.service(Page.java:407)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:136)
    at com.caucho.server.http.Invocation.service(Invocation.java:268)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:128)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:238)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:157)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)左邊幀:java.lang.NullPointerException
    at _jsp._tree2._part._treectr__jsp._jspService(/tree2/part/treectr.jsp:48)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:87)
    at com.caucho.jsp.JavaPage.subservice(JavaPage.java:81)
    at com.caucho.jsp.Page.service(Page.java:407)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:136)
    at com.caucho.server.http.Invocation.service(Invocation.java:268)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:128)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:238)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:157)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)
      

  28.   

    中午给你附上源码,用asp和JSP都没问题,我一直用。
      

  29.   

    to bluerain006(bluerain) :
        给我一份。
        [email protected]
      

  30.   

    to : liuzxit(陷入MS...痛并快乐着) 
       
    你写的代码可以免费使用嘛?的确很好用。
      

  31.   

    liuzxit(陷入MS...痛并快乐着) 的的确好,建议楼主使用.
    呵呵,同时也请楼主实践自己的话,给他发分!
      

  32.   

    liuzxit(陷入MS...痛并快乐着)   的树只需要三个字段,即id,上级id,名称,数据库操作也相对简单多了.只需要按他提示的把数据动态添加进去,再定义点击事件就好了.
      

  33.   

    to xiaofenguser(风雨)老兄,你前几天還是四個角怎么突然就變一顆星了?
      

  34.   

    請 liuzxit(陷入MS...痛并快乐着),wkrain(花土沟的骆驼刺),nanman(南蛮)http://expert.csdn.net/Expert/topic/1374/1374329.xml?temp=9.611148E-02
      

  35.   

    請liuzxit(陷入MS...痛并快乐着)到以下帖子領分:
    http://expert.csdn.net/Expert/topic/1374/1374334.xml?temp=2.236575E-02
    http://expert.csdn.net/Expert/topic/1374/1374335.xml?temp=.5776636
    http://expert.csdn.net/Expert/topic/1374/1374336.xml?temp=.3901178
    http://expert.csdn.net/Expert/topic/1374/1374338.xml?temp=.1663629
      

  36.   

    剛發現JSP版并入JAVA版﹐加的分不屬于WEB版的﹐而這個版我又是從不光顧的﹐也算了﹐樓主﹐另兩貼你就刪掉吧