和
请注意:行数是单选,所以数据源为:type="radio"。隐藏列为多选,为type="check"。(参考Menu的帮助文档)
数据源代码(Menu组件的规定格式就是这样的,如有疑问,请参考帮助文档Menu篇):
<mx:XML id="xmlDP">
<root>
<node label="行数" >
<node label='10' type="radio" groupName="radioGroup" toggled="true"/>
<node label='15' type="radio" groupName="radioGroup" />
<node label='30' type="radio" groupName="radioGroup"/>
<node label='50' type="radio" groupName="radioGroup"/>
</node>
<node label="隐藏列">
<node label="登录名称" type="check" value="1"/>
<node label="全名" type="check" value="2"/>
<node label="组织代号" type="check" value="3"/>
<node label="状态" type="check" value="4"/>
<node label="角色设置" type="check" value="5"/>
</node>
</root>
</mx:XML>
组件代码:
<mx:PopUpButton label="其它" id="pub" width="10%" creationComplete="creatMenu()"/>
AS代码:
//生成弹出菜单(隐藏列和显示条数)
private function creatMenu():void{
var menu:Menu = new Menu();
menu.labelField = "@label";
menu.dataProvider = xmlDP;
menu.showRoot = false;
menu.width = 100;
menu.addEventListener("itemClick",ick);//为itemClick添加监听函数(事件是这样引用的)
pub.popUp = menu;
}
//点击隐藏列和显示条数的menu时,响应函数
private function ick(evt:MenuEvent):void{
var str:String = [email protected];
//页面大小改变事件
if(str.match(/^[0-9]+$/)){//使用正则表达式来判断此字符串是否包含数字
pageSize = int(str);//将str转换成int类型
this.height=setHeight(pageSize);
loadData(0);
}else{
var d:DataGridColumn = null;//声明一个DataGridColumn对象
switch(int([email protected])){//根据value属性判断属于哪个列
case 1:
d = logname; logname是列的ID
break;
case 2:
d = fullname;
break;
case 3:
d = orgid;
break;
case 4:
d = status;
break;
default:
d = role;
}
//设置隐藏或显示
if(d.visible == true){
d.visible = false;
} else{
d.visible = true;
}
}