【发布时间】:2010-10-31 06:07:06
【问题描述】:
如何制作一个用户可以选择null 的组合框?
如果您只是在 dataprovider 中创建一个带有null 的组合框,则会显示该值但用户无法选择它:
<mx:ComboBox id="cb" dataProvider="{[null, 'foo', 'bar']}" />
有没有办法让那个 null 可选?
一种解决方法是在 dataProvider 中添加一个不为空但“表示”为空的项目;然后每次访问组合框时在 null 和该对象之间进行映射。但这并不是一个优雅的解决方案。在访问“可为空”组合框的所有代码中,您必须始终牢记此映射...
编辑:详细说明我不喜欢该解决方法的原因:
当然可以在子类中完成,但要么我引入新属性(如nullableSelectedItem);但是你必须小心始终使用这些属性。或者我覆盖 ComboBoxes selectedItem;但我担心这会破坏基类:它可能不喜欢改变它对当前选定项目从内部的想法的东西。甚至这个脆弱的 hack 也有效,在 selectedItem 和 dataProvider 之上,这个 nullItem 还需要在 data 和 listData 中针对渲染器在 labelFunction 中进行特殊处理,然后它可能仍然暴露在ComboBox 发送的事件...
它可能会起作用,但它只是为了解决如果用户单击该项目它没有被激活的问题(对于其余的 ComboBox 处理 null 很好),这是一个相当大的技巧。
(另一种选择是将 ui 组件委托给 ComboBox,但为了避免这个小问题,代码还要多得多)
【问题讨论】:
-
你可以创建一个 ComboBox 的子类,它封装了这个空值行为。
-
对 Spark ComboBox 有什么想法吗?
标签: apache-flex combobox null