2012-01-26 60 views
1

我有一個表格,其中有1.000行和6列。它有一個ID字段作爲索引,第二個字段「Name」包含可判斷的特定對象的名稱。你可以猜到,Name是唯一的。Treeview基於單個字段

名稱與「Plant.Tree.Apple.Pit」或「Animal_Mammal_Dog」或任何其他非字母/非數字作爲分隔符相似。不是一個大問題。但我需要將這些名字分解成單詞,並用這些單詞來挖掘它們。因此,我的第一個例子將是4個等級,而我的第二個三個等級會很深。然後它需要在瀏覽器中顯示給用戶。

什麼是建立這棵樹的最有效的方法?

+0

你打開數據庫模式更改建議,還是你不能修改的東西,絕對需要在你的數據庫中做這個'Plant.Tree.Apple.Pit'的東西? –

+0

不,數據庫模式已修復。太多的代碼已經取決於這個結構,否則它會容易得多。 –

回答

0

那麼,'最有效'通常取決於您如何計劃訪問數據。你只需要解析樹,然後顯示給用戶,這就是它?

在這種情況下,我想我會將它建模爲一個簡單的樹,由Node對象組成。

還有其他的樹結構可以使用,但它們變得更加複雜,並且依賴於你打算如何使用這些數據。您是否在網絡服務器上構建了這棵樹,並且因此需要儘可能快地避免cpu捱餓?你只是顯示給用戶?

另一種選擇是將原始行轉儲到頁面,然後編寫javascript以從轉儲的數據生成顯示樹。這樣,客戶端的瀏覽器就可以完成解析樹並顯示它的所有工作。

編輯回答您的評論

好吧,然後將一個標準的樹結構的工作?我假設你知道如何製作一個,但以防萬一:

你抓一行,解析它的標記。從第一個標記開始,從樹的根開始,確定標記是否是當前節點的子標記;如果是,請將其設置爲當前節點,然後繼續下一個標記。如果沒有,請將其插入樹中並使其成爲新的當前節點。將這些節點標記爲命名空間節點。重複,直到你擊中最後一個代表你的最終目標的代幣。用參數將對象插入當前節點。

你可以用一個類來完成所有這一切;讓該類存儲節點類型(名稱空間或對象),子節點列表,以及該節點是類型對象時該對象的屬性。或者你可以通過繼承和轉換來實現,以便每個節點不必爲該對象設置參數,在所有名稱空間節點中,可聽到的都是空的。

+0

是的,解析樹,顯示給用戶。除了樹的葉子將顯示一些額外的領域。但是,問題主要在於構建該節點樹。 –