天天看點

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;

                } 

    }