Cool! I figured somebody would know a way around this. Just to confirm, when the reassignment of the dataProvider is done it will cause the Repeater to redraw/refresh all of its components and sub-components.
Hmmm now to find a way to do something similar with disparate types of
sub-components so that based on the dataProvider array the creation is
different.
Thanks,
-Kent
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Tracy Spratt
Sent: Tuesday, June 28, 2005 12:33 PM
To: [email protected]
Subject: RE: [flexcoders] Confusion with mx:Repeater
Interesting. After the removeItemAt call, the next time
getRepeaterItem() is called it returns undefined.
We might investigate further, but I got this to work by using array
methods on the data provider, then re-assigning it to the repeater:
for (var i = 0; i < itemList.length; i++) {
if (itemList[i].itemId == itemId) {
//itemList.removeItemAt(i);
itemList.splice(i,1)
break;
}
}
items.dataProvider = itemList;
Tracy
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Kent Henneuse
Sent: Tuesday, June 28, 2005 1:25 PM
To: [email protected]
Subject: [flexcoders] Confusion with mx:Repeater
I get the basic concepts of Repeaters and have successfully gotten one
to
show me one via a dataprovider. I am now having a bit of trouble
understanding how to manipulate items in the Repeater. I know that I
have
to be careful with data in Arrays because they will not fire
ChangeEvents
but that doesn't seem to be a problem so far.
Below is a test screen that I wrote. If I remove the last item first,
and
then the remaining item it works. If I remove the first item and then
try
to remove the remaining item, the remaining item is not removed. I am
sure
this is probably a limited understanding of the calls and use of the
Repeater but the documentation seems a bit sketchy on them beyond just
for
display.
Thanks,
-Kent
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
<mx:Script>
<![CDATA[
var itemA = new Object(
{itemId:'1', itemText:'Put something in the first box'});
var itemB = new Object(
{itemId:'2', itemText:'Put something in the second box'});
var itemList = [itemA, itemB];
public function removeItem(itemId:Number):Void {
for (var i = 0; i < itemList.length; i++) {
if (itemList[i].itemId == itemId) {
itemList.removeItemAt(i);
break;
}
}
}
]]>
</mx:Script>
<mx:Panel title="Items" width="100%">
<mx:Repeater id="items" dataProvider="{itemList}">
<mx:HBox>
<mx:TextInput width="90%" text="{items.currentItem.itemText}"/>
<mx:Button label="Remove"
click="removeItem(event.target.getRepeaterItem(0).itemId)"/>
</mx:HBox>
<mx:HRule />
</mx:Repeater>
</mx:Panel>
</mx:Application>
I used to work in a fire hydrant factory. You couldn't park anywhere
near
the place.
- Steven Wright
--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
Yahoo! Groups Links
smime.p7s
Description: S/MIME cryptographic signature

