如何创建一个ComboBox,使用户可以选择null
?
如果你只是在dataprovider中添加null
来创建ComboBox,那么null
的值会出现,但用户无法选择它:
<mx:ComboBox id="cb" dataProvider="{[null, 'foo', 'bar']}" />
有没有办法使其可以选择null?
一个解决方法是在dataProvider中添加一个代表null的非null对象,并且每次访问combobox时将null和该对象映射。但这不是一种优雅的解决方案;你必须始终记住所有访问“可为空”combobox的代码中都要使用这个映射...
编辑:进一步说明为什么我不喜欢这个解决方案:
当然,它可以在子类中完成,但是要么我引入新的属性(如nullableSelectedItem
),但是那么就必须小心地始终使用这些属性。要么就覆盖ComboBoxes selectedItem
;但我担心这会破坏基类:它可能不喜欢来自内部的关于当前所选项目的想法的变化。即使这个脆弱的hack起作用了,在selectedItem
和dataProvider
之上,还需要特殊处理这个nullItem,以便在渲染器的data
和listData
、labelFunction
中,以及可能仍然在ComboBox发送的事件中公开它...
它可能有效,但仅仅为了解决用户点击该项时不激活的问题,这是相当麻烦的。(另一种选择是将一个ui组件委托给一个ComboBox,但这样做只是为了避免这个小问题而需要更多的代码)