Flex 当中如何做下拉列表?总的来说,有两种方式,一种是mxml标签的方式,一种是as脚本的方式。两种方式有什么优缺点呢?标签的方式直观,对开发人员来说,可读性好。脚本的方式灵活,可以写复杂的逻辑,可以动态的生成。动态生成有什么好处,可以有多个效果。
那么先看看动态生成是怎么实现的?有combobox 的组件。
package grid
{
import flash.display.DisplayObject;
import flash.events.Event;
import flash.events.KeyboardEvent;
import mx.containers.Grid;
import mx.containers.GridItem;
import mx.containers.GridRow;
import mx.controls.ComboBox;
import mx.collections.ArrayCollection;
public class Entry extends Grid
{
public function Entry()
{
super();
init();
}
public function init():void{
var items:Array = [
{label:"label1", data:"Data1"},
{label:"label2", data:"Data2"},
{label:"label3", data:"Data3"},
{label:"label4", data:"Data4"},
{label:"label5", data:"Data5"},
];
var aCb:ComboBox = new ComboBox();
aCb.dataProvider = items;
aCb.addEventListener(KeyboardEvent.KEY_DOWN, onAddItem);
aCb.editable = true;
var row:GridRow = new GridRow();
var item:GridItem = new GridItem();
item.addChild(aCb);
row.addChild(item);
this.addChild(row);
}
public function onAddItem(event:KeyboardEvent):void {
var newRow:int = 0;
if (event.target.text =="label") {
newRow = int(ArrayCollection(ComboBox(event.currentTarget).dataProvider).length) + 1;
ArrayCollection(ComboBox(event.currentTarget).dataProvider).addItemAt({label:String(event.target.text)+ newRow, data:"Data" + newRow},newRow-1);
}
}
}
}
下拉列表有哪些用户动作呢?用户要从一堆数据中选出一个来。归根到底都是从一个list当中选出一个来。那么list可变吗?可以往list里动态追加,这样的话list当中的项目数就会变化。项目数有没有极限?超过了屏幕的高度怎么办?可以加上滚动条。combobox 有两种,一种是可编辑的,一种是不可编辑的。编辑可能的话就是方便用户查找。可编辑的话可以自动加到list中去。这个功能不错。
combobox还可以有快捷键。如果要触屏的话,也可以做到,很好啊。提示有什么作用呢?