2010-08-08 46 views
0

我在柔性樹形控件中遇到了一些麻煩。 我在我的系統中有一個控件,當然它是數據驅動的。柔性樹形控件中的展開和摺疊圖標

我有一個組顯示文件夾圖標,這很好,但它也顯示一個擴展圖標,當該項目沒有孩子。

我沒有什麼顯示擴展圖標,當組沒有孩子,但我想顯示文件夾圖標,因爲它是我的系統中不同的實體。

這裏是我正在談論的一個例子。我仍然想要顯示文件夾圖標,在這種情況下,展開圖標應僅隱藏在子圖標中。

alt text

回答

1

這很容易,如果你想使用一個非XML數據提供者(如樹的dataProvider屬性設置爲嵌套ArrayCollections的結構)來搞定這個問題。在這種情況下,訣竅是給每個節點一個children()函數,如果沒有孩子,返回null(而不是空集)。

但是,假設您使用的是普通的舊XMLListCollection,那麼您將如何使它顯示文件夾圖標?如果您要爲節點提供一組空白的子節點,則會再次顯示擴展圖標。子節點的列表必須是null。或者,如果您將節點的isBranch屬性設置爲true,則它將顯示「錯誤」,如上所示。

顯示不帶擴展圖標的文件夾圖標最簡單的方法是用您自己的所有(非常醜陋)的默認圖標替換,這樣就可以完全控制它們的顯示方式。你會做什麼設置三個屬性:defaultLeafIconfolderClosedIconfolderOpenIcongood example at Flex Examples):

[Embed(source="folder.png")] 
public var iconFolder:Class; 

[Embed(source="folder.png")] 
public var iconFolderOpen:Class; 

<mx:Tree dataProvider="{yourData}" 
    defaultLeafIcon="{iconFolder}" 
    folderClosedIcon="{iconFolder}" 
    folderOpenIcon="{iconFolderOpen}" /> 

我看到你已經在使用絲綢圖標集,其中有一個相當不錯的封閉的文件夾圖標。由於某些原因,它不包含打開的文件夾圖標,但您可以使用封閉的文件夾或其他任何東西。

你也可以使用iconFunction(Flex Examples again),但我認爲上面的方法更容易實現。

如果沒有這些問題,請給我們一些關於數據提供者內容和現有樹屬性的更多細節,然後看看我們是否無法弄清楚。無論如何希望有所幫助。

+0

這不會做這項工作,如果我將孩子歸還爲null,那麼展開圖標仍然存在,您只是無法對它做任何事情。 這個文件夾是打開的,你不能關閉它。 – KensoDev 2010-08-09 08:00:35

+0

然後你可以提供你用來顯示樹和數據的代碼嗎?我只能假設你使用的是股票標準XLC-> Tree,如果你正在做其他事情(如果它不工作,你必須這樣做),我可以做很多事情來幫助你。 順便說一句,你是對的,單獨更換圖標不會有幫助,但如果你修復了幻影兒童問題,那麼這是正確的方法。 – orlade 2010-08-09 09:16:41