MXML
<?
xml version="1.0" encoding="utf-8"
?>
<!-- http://blog.flexexamples.com/2008/02/21/creating-a-custom-label-function-on-a-flex-popupmenubutton-control/ -->
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml"
layout ="vertical"
verticalAlign ="top"
backgroundColor ="white" >
< mx:Script >
<![CDATA[
private function getTeams(dp:XML, leagueAbbrev:String, divisionLabel:String):XMLList {
return dp.league.(@abbrev == leagueAbbrev).division.(@label == divisionLabel).team;
}
private function popUpMenuButton_labelFunc(item:Object):String {
return item.@label + " " + item.@name;
}
]]>
</ mx:Script >
< mx:XML id ="mlb" source ="mlb.xml" />
< mx:XMLListCollection id ="mlbXLC"
source =" {getTeams(mlb, 'NL', 'West')} " >
< mx:sort >
< mx:Sort >
< mx:fields >
< mx:SortField name ="@label"
caseInsensitive ="true" />
</ mx:fields >
</ mx:Sort >
</ mx:sort >
</ mx:XMLListCollection >
< mx:PopUpMenuButton id ="popUpMenuButton"
dataProvider =" {mlbXLC} "
labelFunction ="popUpMenuButton_labelFunc" />
</ mx:Application >
<!-- http://blog.flexexamples.com/2008/02/21/creating-a-custom-label-function-on-a-flex-popupmenubutton-control/ -->
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml"
layout ="vertical"
verticalAlign ="top"
backgroundColor ="white" >
< mx:Script >
<![CDATA[
private function getTeams(dp:XML, leagueAbbrev:String, divisionLabel:String):XMLList {
return dp.league.(@abbrev == leagueAbbrev).division.(@label == divisionLabel).team;
}
private function popUpMenuButton_labelFunc(item:Object):String {
return item.@label + " " + item.@name;
}
]]>
</ mx:Script >
< mx:XML id ="mlb" source ="mlb.xml" />
< mx:XMLListCollection id ="mlbXLC"
source =" {getTeams(mlb, 'NL', 'West')} " >
< mx:sort >
< mx:Sort >
< mx:fields >
< mx:SortField name ="@label"
caseInsensitive ="true" />
</ mx:fields >
</ mx:Sort >
</ mx:sort >
</ mx:XMLListCollection >
< mx:PopUpMenuButton id ="popUpMenuButton"
dataProvider =" {mlbXLC} "
labelFunction ="popUpMenuButton_labelFunc" />
</ mx:Application >
mlb.xml
<?
xml version="1.0" encoding="utf-8"
?>
- <!-- http://blog.flexexamples.com/2007/12/04/sorting-xml-documents-using-an-xmllistcollection/
-->
- < root >
- < league label ="American League" abbrev ="AL" >
- < division label ="West" >
< team label ="Los Angeles" name ="Angels of Anaheim" />
< team label ="Seattle" name ="Mariners" />
< team label ="Oakland" name ="Athletics" />
< team label ="Texas" name ="Rangers" />
</ division >
- < division label ="Central" >
< team label ="Cleveland" name ="Indians" />
< team label ="Detroit" name ="Tigers" />
< team label ="Minnesota" name ="Twins" />
< team label ="Chicago" name ="White Sox" />
< team label ="Kansas City" name ="Royals" />
</ division >
- < division label ="East" >
< team label ="Boston" name ="Red Sox" />
< team label ="New York" name ="Yankees" />
< team label ="Toronto" name ="Blue Jays" />
< team label ="Baltimore" name ="Orioles" />
< team label ="Tampa Bay" name ="Rays" />
</ division >
</ league >
- < league label ="National League" abbrev ="NL" >
- < division label ="West" >
< team label ="Arizona" name ="Diamondbacks" />
< team label ="Colorado" name ="Rockies" />
< team label ="San Diego" name ="Padres" />
< team label ="Los Angeles" name ="Dodgers" />
< team label ="San Francisco" name ="Giants" />
</ division >
- < division label ="Central" >
< team label ="Chicago" name ="Cubs" />
< team label ="Milwaukee" name ="Brewers" />
< team label ="St. Louis" name ="Cardinals" />
< team label ="Houston" name ="Astros" />
< team label ="Cincinnati" name ="Reds" />
< team label ="Pittsburgh" name ="Pirates" />
</ division >
- < division label ="East" >
< team label ="Philadelphia" name ="Phillies" />
< team label ="New York" name ="Mets" />
< team label ="Atlanta" name ="Braves" />
< team label ="Washington" name ="Nationals" />
< team label ="Florida" name ="Marlins" />
</ division >
</ league >
</ root >
- <!-- http://blog.flexexamples.com/2007/12/04/sorting-xml-documents-using-an-xmllistcollection/
-->
- < root >
- < league label ="American League" abbrev ="AL" >
- < division label ="West" >
< team label ="Los Angeles" name ="Angels of Anaheim" />
< team label ="Seattle" name ="Mariners" />
< team label ="Oakland" name ="Athletics" />
< team label ="Texas" name ="Rangers" />
</ division >
- < division label ="Central" >
< team label ="Cleveland" name ="Indians" />
< team label ="Detroit" name ="Tigers" />
< team label ="Minnesota" name ="Twins" />
< team label ="Chicago" name ="White Sox" />
< team label ="Kansas City" name ="Royals" />
</ division >
- < division label ="East" >
< team label ="Boston" name ="Red Sox" />
< team label ="New York" name ="Yankees" />
< team label ="Toronto" name ="Blue Jays" />
< team label ="Baltimore" name ="Orioles" />
< team label ="Tampa Bay" name ="Rays" />
</ division >
</ league >
- < league label ="National League" abbrev ="NL" >
- < division label ="West" >
< team label ="Arizona" name ="Diamondbacks" />
< team label ="Colorado" name ="Rockies" />
< team label ="San Diego" name ="Padres" />
< team label ="Los Angeles" name ="Dodgers" />
< team label ="San Francisco" name ="Giants" />
</ division >
- < division label ="Central" >
< team label ="Chicago" name ="Cubs" />
< team label ="Milwaukee" name ="Brewers" />
< team label ="St. Louis" name ="Cardinals" />
< team label ="Houston" name ="Astros" />
< team label ="Cincinnati" name ="Reds" />
< team label ="Pittsburgh" name ="Pirates" />
</ division >
- < division label ="East" >
< team label ="Philadelphia" name ="Phillies" />
< team label ="New York" name ="Mets" />
< team label ="Atlanta" name ="Braves" />
< team label ="Washington" name ="Nationals" />
< team label ="Florida" name ="Marlins" />
</ division >
</ league >
</ root >
来自:http://blog.flexexamples.com/2008/02/21/creating-a-custom-label-function-on-a-flex-popupmenubutton-control/