2009-01-17 38 views
2

我有一個包含樹的本地SQLite數據庫(如嵌套集)。在AIR應用程序中,我想在樹形控件中顯示該樹,並提供更改節點名稱以及複製,移動,添加或刪除節點的方法。將Flex Tree控件綁定到存儲在數據庫中的樹上的最佳方式是什麼?

現在,我打算在哪裏放置哪些代碼。很明顯,我有一個類將執行像數據庫加載/更新/插入/刪除操作。這會將整個樹加載到某個存儲變量中,並將用戶所做的更改保存回數據庫。

該類應該是dataProvider,dataDescriptor還是Tree控件本身的擴展?當用戶請求像添加節點這樣的操作時,是否應該更新dataProvider並讓數據庫處理程序對事件作出反應,還是應該調用數據庫處理程序的方法,然後更新dataProvider?我會說後者更好,因爲如果db查詢出現問題,更新樹的數據會更容易。

有方法來添加和刪除DefaultDataDescriptor和Tree類中的節點(後者中的受保護方法),我應該使用/擴展它們還是忽略它們?

我對此感到困惑的原因是,根據文檔,Tree控件使用存儲在其'dataDescriptor'屬性中的對象來解析和處理存儲在其'dataProvider'屬性中的實際數據。

這似乎是有道理的,直到你意識到,除非你繼承它,它從來沒有操縱數據的樹控件(拖&下降外,如果已啓用),並且它不是dataDescriptor,無論是 。相反,在所有示例中,操作數據直接通過dataProvider對象發生,並觸發Tree控件中的事件處理程序。

這是什麼我不在這裏?

回答

1

看看mx.controls.treeClasses.HierarchicalCollectionView。它不是公共API的一部分,但它的全部源代碼都是Flex的一部分。樹控制器在內部使用這個類來處理各種數據源。

+0

爲什麼heck不是公共API的那個類的一部分?我有非常類似的困惑。 – 2011-09-21 12:38:06

相關問題