天天看点

PopUpButton结合Menu的二级菜单

PopUpButton结合Menu的二级菜单

PopUpButton结合Menu的二级菜单

请注意:行数是单选,所以数据源为: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;

                } 

    }