Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions

How do I loop through ItemRenderers in a custom ComboBox?

Posted on 2009-05-12
Last Modified: 2013-11-11
I have a custom ComboBox component where each item consists of a checkbox and a label. I need to be able to clear all selected checkboxes when needed, but I can't figure out how to access the ItemRenderers when looping through the list of selected items.
public function deselectAll( ):void
    	for( var i in selectedItems )
    	       // what do I do here?

Open in new window

Question by:eCat12
  • 2
  • 2
LVL 10

Expert Comment

ID: 24373031
The best way to do this is to think in terms of manipulating the data that the combobox and itemrenderers are presenting, rather than manipulating the GUI directly to alter the data.

To explain, you presumably provide an ArrayCollection or XMLList to the Combobox dataprovider.
Each item should have a property related to whether it is 'selected' or otherwise.
Your itemrenderer checkbox state should be data-bound to the 'selected' property.

This way if the user changes the state of a checkbox by clicking, the underlying 'selected' property for that item data is updated according to the checkbox state.

Clearing checkboxes is then a simple case of iterating through the dataprovider items to clear the 'selected' property, instead of trying to manipulate the data through the GUI as a user would.
LVL 37

Expert Comment

ID: 24374834
>> I can't figure out how to access the ItemRenderers
Don't try to look for itemrenderer*S*.
There's only ONE itemrenderer that renders all the items in your combo box.

You should indeed simply iterate through all the items in your combo box's dataprovider and reset property 'X' to false or 0 or whatever.
Property 'X' is the property that corresponds with a selected checkbox in your itemrenderer.

Author Comment

ID: 24377608
Thanks for the replies. I looped through the items in the dataProvider and set the selected property of each item to false, but the checkboxes still remain checked until I close the combobox and re-open it. How do bind this value to the checkbox's state?
LVL 10

Accepted Solution

mplord earned 100 total points
ID: 24380171
This can be tricky with Checkboxes - here's an example.
In this case, the source property 'checked' is a string "true" or "false", where the Checkbox 'selected' property requires boolean true/false, so there's some translation between the two types going on here.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
			[Bindable] public var model:XML = 
					<person name="Fred" checked="true"/>
					<person name="Jim" checked="false"/>
					<person name="Bill" checked="false"/>
					<person name="John" checked="false"/>
			private function onClear(event:Event):void
				for each (var node:XML in combo.dataProvider)
					node.@checked = "false";
	<mx:VBox verticalCenter="0" horizontalCenter="0" horizontalAlign="center">
		<mx:ComboBox id="combo" labelField="@name" dataProvider="{model.person}">
					<mx:CheckBox label="test" width="100%" change="cbChange(event);" creationComplete="init();">
							import mx.binding.utils.BindingUtils;
							private function init():void
								BindingUtils.bindProperty(this, "selected", this, "checked");
								this.label = data.@name;
							[Bindable] public function get checked():Boolean
								return (data.@checked=="true")?true:false;
							public function set checked(state:Boolean):void
								data.@checked = state?"true":"false";
							private function cbChange(event:Event):void
								checked = this.selected;
		<mx:Button label="Clear" click="onClear(event);"/>

Open in new window


Author Comment

ID: 24399465
Thank you!! I've got it now. :)

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Can't find all of the preferences on Flash Pro 2 492
FLV versus SWF 11 283
Flash Slides/Presnetation 4 77
Include Adobe AIR libraries in Flash Builder 4 131
While working over numerous projects I often had the requirement for doing a screen capture in AS3.0. Unfortunately I found no "ready made" solutions in google search that suited my requirements. But I did come across some great resources which help…
The last time I worked with Flash and Socket connections was in AS1. A recent project required flash connecting to a Socket, and sending receiving information - we figured it would be easy enough - we all know about the socket policy documents and c…
In this tutorial viewers will learn how to create a basic shape tween animation in Flash including shape hints for smooth animation Open a new document in Flash: Draw a shape: Select another frame (how long you want the tween to be): Right click and…
The goal of the tutorial is to teach the user how to set there setting in Adobe Flash Media Live Encoder and YouTube for optimal video and audio quality.

860 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question