Solved

setting default selected value of a ComboBox?

Posted on 2008-06-17
17
2,824 Views
Last Modified: 2012-01-22
Is there a way to set the default selected Value of a combo box based on if a string matches the labelField Value?

<?xml version="1.0" encoding="utf-8"?>

<!-- http://blog.flexexamples.com/2008/01/16/determining-which-item-was-clicked-in-a-flex-linkbar-control/ -->

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

        layout="vertical"

        verticalAlign="middle"

        backgroundColor="white">

    <mx:Script>

        <![CDATA[

            import mx.controls.Alert;

            

            

 

                        var dataStr:String;

                        var animalStr:String;

            private function onClick1(eventtester:String):void {

                dataStr=eventtester;

                Alert.show('combo box should now change to ' + eventtester);

                animalsComboBox.selectedLabel == eventtester;

            }

            

            private function onClick2(eventtester2:String):void {

                Alert.show(eventtester2);

            }

            

 

        ]]>

    </mx:Script>

 

    <mx:Array id="animals">

        <mx:Object label="One" data="1" custom="cougar" />

        <mx:Object label="Two" data="2" custom="rhino" />

        <mx:Object label="Three" data="3" custom="elephant" />

        <mx:Object label="Four" data="4" custom="penguin" />

    </mx:Array>

    

 

    

<mx:Repeater dataProvider="{animals}" id="RP">

<mx:TextInput id="textBox" text="{RP.currentItem.custom}"/>     

 
 

 

<mx:Button id="myButton" label="{String(RP.currentItem.custom)}" click="onClick1(event.currentTarget.getRepeaterItem().custom)"/>
 

</mx:Repeater>
 
 
 

<mx:LinkButton id="myLinkbutton" label="Click Event 2" click="onClick2(this.dataStr)"/> 

	<mx:ComboBox id="animalsComboBox" dataProvider="{animals}" labelField="custom"></mx:ComboBox>
 

 

</mx:Application>

Open in new window

0
Comment
Question by:_CODER_
17 Comments
 
LVL 23

Expert Comment

by:Siva Prasanna Kumar
Comment Utility
What you want the default value as??

you can do it in two ways via  selectedItem or selectedIndex of the combo box.

in you case if you try something like selectedItem="3" for the comboBox
0
 

Author Comment

by:_CODER_
Comment Utility
I want the selected item in the combobox to be the onClick1 value.
0
 

Author Comment

by:_CODER_
Comment Utility
so if you click 'elephant' button the selected item in the combo box will be 'elephant'

0
 
LVL 23

Expert Comment

by:Siva Prasanna Kumar
Comment Utility
Just to get your code working I made few changes to the previous methods
<?xml version="1.0" encoding="utf-8"?>

<!-- http://blog.flexexamples.com/2008/01/16/determining-which-item-was-clicked-in-a-flex-linkbar-control/ -->

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

        layout="vertical"

        verticalAlign="middle"

        backgroundColor="white">

    <mx:Script>

        <![CDATA[

            import mx.controls.Alert;

            

            

 

                        var dataStr:String;

                        var animalStr:String;

            private function onClick1(eventtester:Object):void {

                dataStr=eventtester.custom;

                Alert.show('combo box should now change to ' + eventtester);

                animalsComboBox.selectedItem = eventtester;

            }

            

            private function onClick2(eventtester2:String):void {

                Alert.show(eventtester2);

            }

            

 

        ]]>

    </mx:Script>

 

    <mx:Array id="animals">

        <mx:Object label="One" data="1" custom="cougar" />

        <mx:Object label="Two" data="2" custom="rhino" />

        <mx:Object label="Three" data="3" custom="elephant" />

        <mx:Object label="Four" data="4" custom="penguin" />

    </mx:Array>

    

 

    

<mx:Repeater dataProvider="{animals}" id="RP">

<mx:TextInput id="textBox" text="{RP.currentItem.custom}"/>     

 

 

 

<mx:Button id="myButton" label="{String(RP.currentItem.custom)}" click="onClick1(event.currentTarget.getRepeaterItem())"/>

 

</mx:Repeater>

 

 

 

<mx:LinkButton id="myLinkbutton" label="Click Event 2" click="onClick2(this.dataStr)"/> 

        <mx:ComboBox id="animalsComboBox" dataProvider="{animals}" labelField="custom" ></mx:ComboBox>

 

 

</mx:Application>

Open in new window

0
 

Author Comment

by:_CODER_
Comment Utility
I see the changes. Trying it out now on my actual application...
0
 

Author Comment

by:_CODER_
Comment Utility
It doesn't seem to be working in my application. I think it's because the combobox has a separate datasource then the method is using. but I need to match them based on Text in the label of the combo box is that possible?
0
 

Author Comment

by:_CODER_
Comment Utility
if my datasource for the comobBox is from a database table, will it still be setup as:
private function onClick1(eventtester:Object):void

or will it be different?

0
 
LVL 23

Expert Comment

by:Siva Prasanna Kumar
Comment Utility
that should not matter provided the item (object) which is going to onClick1 is same as the one in the combobox, but as you say they are different then you may have to do a little more processing like iterating the datasource used for that combo box and then setting the selected index accordingly.

0
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 

Author Comment

by:_CODER_
Comment Utility
When you say "providing it's the same" do you mean that its the same text?

0
 
LVL 23

Expert Comment

by:Siva Prasanna Kumar
Comment Utility
what ever your feel is same must be mapped for example lets say both have some kind of uniq ID which will be same even thou there text's are different then you need to search for that uniqId in the data source of the combo box and get its index and set the selected index of the combox to appropriate index.
0
 

Author Comment

by:_CODER_
Comment Utility
ahh. ok. I need to match them based on text in the label. not index or uniq ID.
any ideas? Thank you for helping me!

0
 
LVL 23

Expert Comment

by:Siva Prasanna Kumar
Comment Utility
what was the label field?

your code will be something like this, where dp is the data provider for the combobox.
 private function onClick1(eventtester:Object):void {

                dataStr=eventtester.custom;

                

             //for loop iterating over the dataPrvider of the combobox

             //for every object in dataprovider check the text

             // like if(dp[i].text==dataStr)

                   {

                      animalsComboBox.selectedIndex = i;

                   }

               

            }

Open in new window

0
 

Author Comment

by:_CODER_
Comment Utility
the label field of the dataprovider is DriverName

0
 
LVL 23

Expert Comment

by:Siva Prasanna Kumar
Comment Utility
Dude its not possbile to tell like this :)

you may have to get the text on the clicked button and then get the data provider of the combox and iterate through them and match the text of the button with DriverName and set the matched index as selectedIndex
0
 
LVL 1

Accepted Solution

by:
KaiHogan earned 500 total points
Comment Utility
OK, see if this is what you are looking for.   It is what I am doing to match up the combobox (from data source #1) with the DataGrid Element (Data Sourse #2).   So when ever the datagrid selected item is changed it calls a change function that looks at this to determine the correct selected item.
var i:int = -1;

for each ( var node : XML in Application.application.SV_base.lastResult.BaseList )

{

	i++;					

	if (node.Base == dg.selectedItem.Base)

	{

		userBaseEdit.selectedIndex = i;  

	}

}

Open in new window

0
 
LVL 29

Expert Comment

by:dgofman
Comment Utility
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

Suggested Solutions

First things first - Preparation We need all the part for this install and it's much nicer to have them all on hand when you need them so here's what's required. Download Eclipse 3.5 32 bit (I like the Classic flavour) from here. (http://www.e…
Marketing can be an uncomfortable undertaking, especially if your material is technology based. Luckily, we’ve compiled some simple and (relatively) painless tips to put an end to your trepidation and start your path to success.
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

743 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now