OK, below is the solution that I came up with. If anyone sees a simpler / better way, please let me know.

Adobe engineers: I am guessing that removing items from a data grid is a common operation, in which case it seems like there should be a very simple and straightforward way of doing so. What am I missing?

private function sortOnInt(strA:String, strB:String):int {

var a:int = int(strA);

var b:int = int(strB);

var r:int = 0;

if(a > b) {

r = -1;

} else if(a < b) {

r = 1;

} else if(a == b) {

r = 0;

}

return r;

}     

private function removeSelected(): void {

var arr:Array = dgTest.selectedIndices;

arr.sort(sortOnInt);

for(var i:int = 0; i < arr.length; i++){

acTest.removeItemAt(arr[i]);

}

}

 


From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Jim Robson
Sent: Thursday, June 08, 2006 11:21 AM
To: flexcoders@yahoogroups.com
Subject: RE: [flexcoders] Re: Remove selected items from an ArrayCollection / DataGrid?

 

Yes, I suspect you’re on the right track (except for the fact that DataGrid indices are Strings – see my other post on that subject).

The other issue I’ve encountered is that the array needs to be sorted from greatest to least. That’s what I’m working on now. Of course, this is not straightforward either, because the DataGrid indices are strings!

 

Thanks for the help!!!

 


From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of bhaq1972
Sent: Thursday, June 08, 2006 11:14 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: Remove selected items from an ArrayCollection / DataGrid?

 

i reckon your the selectedIndicis is changing and therefore cannot
be relied upon within your for loop.

try this. (as a starting point)

private function removeSelected():void
{
var array1:Array = new Array();
for(var j:int;j < dgTest.selectedIndices.length; j++)
{
var num1:int = dgTest.selectedIndices[j];

array1.push(num1);
}

for(var i:int = 0; i < array1.length; i++)
{
acTest.removeItemAt(array1[i]);
}
}

--- In [EMAIL PROTECTED]ups.com, "Jim Robson" <jim.robson@...>
wrote:
>
> Correction: the app is actually removing ½ of the selected items
with each
> click of the button. The new version of the code below has
additional items
> in the data model in order to make this easier to test.
>
>
>
> Any ideas? Am I just missing something obvious?
>
>
>
> <?xml version="1.0" encoding="utf-8"?>
>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >
>
>
>
> <mx:Model id="mTest">
>
> <services>
>
> <service type="Plumbing"
cost="$100"
> description="Fix leaky drain" />
>
> <service type="Electrical"
cost="$200"
> description="Wire stairwell lighting"/>
>
> <service type="Roofing"
cost="$300"
> description="Install vent pipe boot"/>
>
> <service type="Carpentry"
cost="$400"
> description="Replace entry door"/>
>
> <service type="Plumbing"
cost="$500"
> description="Install bath tub"/>
>
> <service type="Electrical"
cost="$600"
> description="Wire home office"/>
>
> <service type="Roofing"
cost="$700"
> description="Install ice &amp; water shield"/>
>
> <service type="Carpentry"
cost="$800"
> description="Install sliding patio door"/>
>
> <service type="Plumbing"
cost="$900"
> description="Install hot tub"/>
>
> <service type="Electrical"
cost="$1000"
> description="Install service box"/>
>
> <service type="Roofing"
cost="$1100"
> description="Shingle one-car garage"/>
>
> <service type="Carpentry"
cost="%1200"
> description="Build small deck"/>
>
> </services>
>
> </mx:Model>
>
> <mx:ArrayCollection id="acTest"
> source="{mTest.services.service}" />
>
>
>
> <mx:Script>
>
> <![CDATA[
>
> import
mx.collections.ArrayCollection;
>
>
>
> private function removeSelected():void{
>
> for(var i:int = 0; i <
> dgTest.selectedIndices.length; i++){
>
>
> acTest.removeItemAt(dgTest.selectedIndices[i]);
>
> }
>
> }
>
>
>
> ]]>
>
> </mx:Script>
>
>
>
> <mx:VBox width="400" height="600">
>
>
>
> <mx:DataGrid id="dgTest"
dataProvider="{acTest}"
> width="400" height="500" allowMultipleSelection="true">
>
> <mx:columns>
>
> <mx:DataGridColumn
> headerText="Type" dataField="type" />
>
> <mx:DataGridColumn
> headerText="Service" dataField="description" />
>
> <mx:DataGridColumn
> headerText="Cost" dataField="cost" />
>
> </mx:columns>
>
> </mx:DataGrid>
>
>
>
> <mx:Button id="btnTest"
click="removeSelected();"
> label="Remove Selected" />
>
>
>
> </mx:VBox>
>
>
>
>
>
> </mx:Application>
>

__._,_.___

--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com





SPONSORED LINKS
Web site design development Computer software development Software design and development
Macromedia flex Software development best practice


YAHOO! GROUPS LINKS




__,_._,___

Reply via email to