我已经尝试使用dropdownWidth属性,但是它将是静态的。但是,如果数据再次太长,我将无法在下拉列表中看到全文。
因此,我的要求是根据下拉项文本的较长宽度来设置width,或者设置水平滚动条。
由于flex不支持水平滚动,因此我覆盖了Combobox类
<mx:FormItem id="zoneformitem" label="{Localizer.getString('zone','i18n')}" paddingLeft="60" paddingTop="15" required="true">
<mx:ComboBox id="selectedzone" open="campaigns.view.utils.CustomiZeCombo"
selectedIndex="-1"
dropdownWidth="210" width="209" change="validateZoneSelection()"
focusOut="validateZoneSelection()"
dataProvider="{slotProxy.slotWizardVo.currentZones.source.
sortOn('zoneName')}" >
<mx:itemRenderer>
<mx:Component>
public class CustomiZeCombo extends ComboBox{
public function CustomiZeCombo(){
super();
}
override public function open():void {
dropdown.horizontalScrollPolicy = ScrollPolicy.ON;
super.open();
}
override protected function
downArrowButton_buttonDownHandler(event:FlexEvent):void {
dropdown.horizontalScrollPolicy = ScrollPolicy.ON;
super.downArrowButton_buttonDownHandler(event);
}
}但我不知道如何调用该事件来使其工作。非常感谢您的建议。
发布于 2018-03-16 16:42:41
尝试使用组合框的click()调用下面的方法。
private function setWidthForLongdata():void {
var width:int;
width = selectedzone.width;
var maxWidth:int;
maxWidth = width + (width/2);
for each (var zone:ZoneVO in slotProxy.slotWizardVo.currentZones.source) {
if(zone.zoneName.length > maxLen ) {
maxLen = zone.zoneName.length;
}
}
if(maxLen*13 > width) {
width = maxLen*13;
if(width>maxWidth) {
width = maxWidth;
}
}
selectedzone.dropdown.width=width;
}https://stackoverflow.com/questions/49071300
复制相似问题