• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 696
  • Last Modified:

How to copy data from one list to another programmatically in Flex

My question is this.  

I have a datagrid which is bound to an XML collection.
I have a blank list.

I have drag enabled on the data grid and drop enabled on the list.

I am able to drag and drop between the lists (this is working fine).

What I am trying to replicate is the scenario where you have a button ( > ) between the lists which will copy the highlighted record to the list as if you had dragged and dropped it.

Hope this makes sense, let me know if you need anything clarifying.

Thanks in advance,
Oli
0
olifarago
Asked:
olifarago
  • 5
  • 2
1 Solution
 
zzynxSoftware engineerCommented:
When pressing the button, remove the selected item out of the XMLCollection and push in into the list bound to the List.
0
 
zzynxSoftware engineerCommented:
Could you maybe show us the code you already have?
0
 
olifaragoAuthor Commented:
I'm really not sure whata you are suggesting.
Attached is a snippet which is a simple example of the scenario.

Oli

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="260">
 
    <mx:Model id="testfruit">
      <fruits>
        <fruit label="Apple"/>
        <fruit label="Banana"/>
        <fruit label="Cherry"/>
        <fruit label="Date"/>
        <fruit label="Pear"/>
      </fruits>
    </mx:Model>
    
    
	<mx:List x="10" y="10" width="160" height="238" dataProvider="{testfruit.fruit}" dragEnabled="true"></mx:List>
	<mx:List x="226" y="10" height="238" width="160" dropEnabled="true"></mx:List>
	<mx:Button x="178" y="119" label="&gt;"/>
	
</mx:Application>

Open in new window

0
The Firewall Audit Checklist

Preparing for a firewall audit today is almost impossible.
AlgoSec, together with some of the largest global organizations and auditors, has created a checklist to follow when preparing for your firewall audit. Simplify risk mitigation while staying compliant all of the time!

 
zzynxSoftware engineerCommented:
Consider this
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="260" creationComplete="onComplete()">
 
 	<mx:Script>
 		<![CDATA[
 			import mx.collections.ArrayCollection;
            [Bindable] private var testfruit:ArrayCollection = new ArrayCollection();
            [Bindable] private var testfruit2:ArrayCollection = new ArrayCollection();
 		
 			private function onClick():void {
 				var item:String = String(testfruit.removeItemAt(list1.selectedIndex));
 				testfruit2.addItem(item);
 			}
 			
 			private function onComplete():void {
 				testfruit.addItem("Apple");
 				testfruit.addItem("Banana");
 				testfruit.addItem("Cherry");
 				testfruit.addItem("Date");
 				testfruit.addItem("Pear");
 			}
 		]]>
 	</mx:Script>
 
        <mx:List id="list1" x="10" y="10" width="160" height="238" dataProvider="{testfruit}" dragEnabled="true"></mx:List>
        <mx:List id="list2" x="226" y="10" height="238" width="160" dataProvider="{testfruit2}"  dropEnabled="true"></mx:List>
        <mx:Button id="_btn" x="178" y="119" label="&gt;" click="onClick()"/>
        
</mx:Application>

Open in new window

0
 
zzynxSoftware engineerCommented:
Oh, sorry. You don't want the item to be moved, but to be copied.
Then just replace this line

var item:String = String(testfruit.removeItemAt(list1.selectedIndex));

by

var item:String = String(testfruit.getItemAt(list1.selectedIndex));

Also, to avoid problems when nothing is selected you'd better write that method like this:

                   private function onClick():void {
                         if (list1.selectedIndex>-1) {
                              var item:String = String(testfruit.getItemAt(list1.selectedIndex));
                               testfruit2.addItem(item);
                         }
                   }
0
 
olifaragoAuthor Commented:
zzynx, thanks for this.
As I was using some more detailed XML records I changed to using Object instead of String. Using our example woudl be:
                   private function onClick():void {
                         if (list1.selectedIndex>-1) {
                              var item:Object= testfruit.getItemAt(list1.selectedIndex);
                               testfruit2.addItem(item);
                         }
                   }
But this is exactly what I needed. Thanks for the guidance.
Oli
0
 
zzynxSoftware engineerCommented:
>> But this is exactly what I needed. Thanks for the guidance.
You're welcome.
Thanx 4 axxepting
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now