我在使用flex Tree控件时遇到了一些麻烦。 我的系统中有一个控件,当然它是数据驱动的。
我有一个显示文件夹图标的组,这很好但是当项目没有孩子时它也会显示一个展开图标。
当组没有孩子但是我想显示文件夹图标时,我不知道它显示扩展图标,因为它是我系统中的不同实体。
这是我正在谈论的一个例子。我仍然想要显示文件夹图标,在这种情况下,只应为子图标隐藏展开图标。
答案 0 :(得分:1)
如果您尝试使用非XML数据提供程序(例如,将Tree的dataProvider属性设置为嵌套ArrayCollections的结构),则很容易出现此问题。在这种情况下,诀窍是给每个节点一个children()
函数,如果没有孩子,则返回null
(而不是空集)。
但是,假设您正在使用普通的旧XMLListCollection,那么您要做什么才能使其显示文件夹图标?如果您为节点提供一组空子项,则会再次显示展开图标。子节点列表必须为null
。或者,如果您将节点的isBranch
属性设置为true,则它将显示为“错误”,如上所示。
显示没有展开图标的文件夹图标的最简单方法是用您自己的图标替换所有(非常难看的)默认图标,这样您就可以完全控制它们的显示方式。您要做的是设置三个属性:defaultLeafIcon
,folderClosedIcon
和folderOpenIcon
(good 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}" />
我看到你已经在使用Silk图标集,它有一个相当不错的封闭文件夹图标。由于某种原因,它不包含打开的文件夹图标,但您可以使用已关闭的图标或其他任何内容。
您也可以使用iconFunction(Flex Examples again),但我认为上述方法对于您要实现的目标更容易。
如果不是这些问题,请向我们提供有关数据提供程序内容和现有树属性的更多详细信息,看看我们是否无法弄明白。希望无论如何都有所帮助。