【发布时间】:2011-02-08 18:14:57
【问题描述】:
我刚刚实现了一个从 ComboCheck example 中提取的复选框的下拉列表,但它扩展了 DropDownList 而不是 ComboBox 以提供我需要的更好的功能。我正在尝试创建一个DropDownList,其中一些项目是 bold 和非复选框(或可以是复选框),而其他项目则不是。
我还没有在网上找到任何关于这样做的信息,并且一直在试图弄清楚。我目前正在使用ArrayCollection 作为dataProvider,但我认为这可能是我的问题,我应该尝试在 flex 而不是 AS3 中设置标签。
有人知道这是否可能吗?如果是这样,他们是否有任何链接可以帮助我指出正确的方向?
谢谢。
编辑: 为 itemRenderer 添加了代码,这行得通我只需要指定我想要加粗的每个项目,但在 flex 代码中是否有更好的方法来做到这一点,而不是在渲染器中检查匹配的字符串?
public class ComboCheckItemRenderer extends ItemRenderer{
public var item:CheckBox;
public function ComboCheckItemRenderer(){
super();
item = new CheckBox();
item.x = 5;
addElement(item);
item.addEventListener(MouseEvent.CLICK, onClick);
}
private var _data:Object;
[Bindable]override public function set data (value:Object):void {
if (value!=null) {
_data = value;
item.label = value.label;
if(item.label == "item1"){
item.setStyle("color","0x00ff00");
item.setStyle("fontWeight","bold");
}
item.selected = value.selected;
}
}
编辑 2: 我最终要做的是创建一个复选框下拉列表,其中包含我从 blazeDS 获得的数据,这些数据基本上有一堆组标题及其相应的子元素。我试图让下拉列表使组以粗体和向左显示,并且它们的子元素正常字体并向右偏移。我还需要知道何时单击它们是组标题还是子元素,以便我可以将它们添加到我将发送回我的服务以执行 sql 查询的对象中。 IE。
[ ]**GROUP**
[ ] element
[ ] element
[ ]**GROUP**
[ ] element
【问题讨论】:
-
显示一些代码;你应该没有理由不能创建一个 itemRenderer 来加粗一些项目,而不是其他项目。
-
我提供了 combocheck 示例的链接,我基本上完全放弃了这个(你可以在那里查看源代码),只是删除了几个我不需要的元素。我不确定还有哪些其他代码有用
-
虽然我认为这实际上可能正是我所需要的,但我只是能够更改 itemRenderer 中的颜色,所以我知道我可以更改所有内容的样式。虽然这是最好的方法,并且对于我想要粗体的每个元素都有 if 语句?我会在这方面工作一段时间,看看我能否让它正常工作并发布
标签: apache-flex actionscript-3 drop-down-menu flex4