給你看看報的錯誤吧: 右邊幀: 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)
字段:类别号,类别名,级别(代表第几层),上级类别,明细标志(是明细就不准再加子菜单)
请给大家一个好的解决办法!!!
e-mail:[email protected]
不限级的.
请模块化整理整理!!!
2:树得生成本质上是通过生成无框的表格<table> 来实现的
3: 树面临两个问题
a:数据动态更新 需要每次重新生成效率低;
b:数据不许要动态更新 效率高 (适用于目录等的生成)
4:建议不使用树来表现数据分层 (web上)
E_mail:[email protected]
不限级的.)有问题???请详细讲,最好是调一调!
请你出来讲一讲!!
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:数据分层问题 可有多种解决方法,具体自己掌握,
兄弟到是有原代码,可是在公司拿不出来 ,抱歉
你说的太简单了吧,其实要牵涉到很多东西,比如单击某节点,向某页传递参数、变色,以及通过数据库添加同级、子级、删除子级等等,而且,JAVASCRIPT又不能操作数据库,必须通过JAVA或者JSP来配合操作,你的提示太少了吧。
//功能﹕無限層樹狀
//作者﹕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> <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>
建議不要用TABLE因為這樣會加重服務器的負擔﹐速度也慢
也沒必要用層吧﹐看我上面的樣式足夠定位了
如果要把+和-號換成圖標只需稍做改動即可﹐以上代碼修改也不多
但如果要加線條這個比較麻煩﹐我也懶得考慮了
至于增刪節點可通過replace即可﹐當初漏考慮了
id,parentId,childCount比较重要,这样做起来比较方便
http://www.ldbz.xs.zj.cn/tree/tree2.zip
我的配置:win2000+jdk1.4+resin2.1.5+access(未知版本)
右邊幀:
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)
给我一份。
[email protected]
你写的代码可以免费使用嘛?的确很好用。
呵呵,同时也请楼主实践自己的话,给他发分!
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