柔性树形控件中的展开和折叠图标

问题描述:

我在柔性树形控件中遇到了一些麻烦。 我在我的系统中有一个控件,当然它是数据驱动的。柔性树形控件中的展开和折叠图标

我有一个组显示文件夹图标,这很好,但它也显示一个扩展图标,当该项目没有孩子。

我没有什么显示扩展图标,当组没有孩子,但我想显示文件夹图标,因为它是我的系统中不同的实体。

这里是我正在谈论的一个例子。我仍然想要显示文件夹图标,在这种情况下,展开图标应仅隐藏在子图标中。

alt text

这很容易,如果你想使用一个非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