Posted on 2006-02-26 18:47
shaofan 閱讀(5790)
評論(4) 編輯 收藏 所屬分類:
Java
主要分為以下四個部分:
1、適合的客戶端腳本(用于顯示在HTML上,生成HTML代碼)
2、標簽庫(用于生成JS的樹定義,當然也可以用JAVABEAN) --JSP頁面
3、樹的數據結構(類、接口,用于為標簽庫提供樹的數據結構,它是數據庫記錄和標簽庫的連接的紐帶)
4、數據庫的記錄到樹對象的轉換
下面是我的實現:
1、JS腳本使用TigraTree,這是一個免費的面向對象的樹腳本,功能比較齊全,樹的定義簡單,易于標簽庫生成JS代碼
比如,以下定義了一個樹:
1 var TREE_ITEMS =
2 [
3
4 [ '方圓公司','www.fangyuan.com',
5 [ '技術部','tech.fangyuan.com',
6 [ '救援隊','rescue.fangyuan.com'],
7 [ '上門服務隊','support.fangyuan.com']
8 ],
9 [ '市場部','market.fangyuan.com'],
10 [ '辦公室','office.fangyuan.com',
11 [ '辦公室廁所','wc.fangyuan.com'
12 ]
13 ],
14 ]
15 ];
然后使用以下代碼在頁面顯示樹:
<script language="JavaScript">
new tree (TREE_ITEMS, TREE_TPL );
</script>
其中,TREE_ITEMS是樹的定義,TREE_TPL是對各個圖標的定義,可以根據需要更改
2、編寫Tree標簽庫,該標簽庫從session/request中讀取一個實現了Tree接口的對象,遍歷該對象,來生成上面所示的js變量TREE_ITEMS,并寫到頁面上,同時也生成new tree(...)代碼,來顯示這棵樹。
代碼就像這樣:
<view:tree name="treDeps" selected="org_selectedNode"
captionProperty="DEP_NAME" href="actDepView.do"
paramID="id" paramProperty="DEP_ID"/>
name是bean的名字,selected是表示當前選中的節點的bean,用來在刷新的時候能記住樹的狀態。
樹由很多個節點組成,每個節點帶有一定的數據,也就是說,一個節點會和一個對象綁定。
captionProperty就是用來指定每個節點上的文字從綁定對象的哪個屬性上取。href表示節點的鏈接,paramID/paramProperty用來生成動態鏈接的參數。
3、session/request中的tree對象是由業務方法從數據庫讀出并生成的。
另外,利用上面講的基本原理,還可以實現很多功能。如各個節點可以定制使用不同的圖標,而不再依賴于節點的狀態來決定圖標,也可以增加復選框、單選框等。甚至可以在數據量很大的時候,每次只取某層的節點,然后在點擊某個節點旁的展開按鈕時,即時從數據庫取數據來顯示。具體的就只能以后再寫了。
(轉移自 shaofan.blogbus.com )