Dauntless
%Europe/Berlin %784 %2008, 19:49
Hey,
Ik wist niet meteen een betere manier om het te omschrijven...
Situatie:
- Een list, DP = een ArrayCollection, gebind
- Twee knoppen: 1 om een item toe te voegen, 1 om te verwijderen (het geselecteerde item)
Probleem:
Eerst voeg ik 4 items toe. Daarna selecteer ik het eerste item en verwijder het. Volgens het output vak is het 1ste item in de lijst geselecteerd, maar grafisch zie je dat het tweede item geselecteerd is. Het probleem doet zich enkel voor in het geval hierboven, en dus niet wanneer je bv het laatste item selecteert, of bv het tweede. Ook bv: Er zijn twee items in de lijst, ik verwijder het 1ste element. Het eerste (en enige) element is dan geselecteerd, maar de selectedIndex staat wel degelijk terug op 1! (Grafisch is dit dus wel niet te zien)
De test files:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Panel x="136" y="250" width="208" height="249" layout="absolute">
<mx:List x="10" y="10" width="168" height="124" id="myList" dataProvider="{myCollection}" change="show()"></mx:List>
<mx:Button x="10" y="172" label="Add" click="addItem()"/>
<mx:Button x="113" y="172" label="Delete" click="removeItem()"/>
<mx:TextInput x="10" y="142" width="168" id="output"/>
</mx:Panel>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable] private var myCollection:ArrayCollection = new ArrayCollection();
private var counter:Number = 0;
private function addItem():void
{
var ob:Object = new Object();
ob.label = "Item " + counter ++;
myCollection.addItem(ob);
myList.selectedIndex = myCollection.length - 1;
show();
}
private function removeItem():void
{
myCollection.removeItemAt(myList.selectedIndex);
myList.selectedIndex = 0;
show();
}
private function show():void
{
output.text = "Selected = " + myList.selectedItem.label;
}
]]>
</mx:Script>
</mx:Application>
Waar gaat het fout?
Greets!
Ik wist niet meteen een betere manier om het te omschrijven...
Situatie:
- Een list, DP = een ArrayCollection, gebind
- Twee knoppen: 1 om een item toe te voegen, 1 om te verwijderen (het geselecteerde item)
Probleem:
Eerst voeg ik 4 items toe. Daarna selecteer ik het eerste item en verwijder het. Volgens het output vak is het 1ste item in de lijst geselecteerd, maar grafisch zie je dat het tweede item geselecteerd is. Het probleem doet zich enkel voor in het geval hierboven, en dus niet wanneer je bv het laatste item selecteert, of bv het tweede. Ook bv: Er zijn twee items in de lijst, ik verwijder het 1ste element. Het eerste (en enige) element is dan geselecteerd, maar de selectedIndex staat wel degelijk terug op 1! (Grafisch is dit dus wel niet te zien)
De test files:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Panel x="136" y="250" width="208" height="249" layout="absolute">
<mx:List x="10" y="10" width="168" height="124" id="myList" dataProvider="{myCollection}" change="show()"></mx:List>
<mx:Button x="10" y="172" label="Add" click="addItem()"/>
<mx:Button x="113" y="172" label="Delete" click="removeItem()"/>
<mx:TextInput x="10" y="142" width="168" id="output"/>
</mx:Panel>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable] private var myCollection:ArrayCollection = new ArrayCollection();
private var counter:Number = 0;
private function addItem():void
{
var ob:Object = new Object();
ob.label = "Item " + counter ++;
myCollection.addItem(ob);
myList.selectedIndex = myCollection.length - 1;
show();
}
private function removeItem():void
{
myCollection.removeItemAt(myList.selectedIndex);
myList.selectedIndex = 0;
show();
}
private function show():void
{
output.text = "Selected = " + myList.selectedItem.label;
}
]]>
</mx:Script>
</mx:Application>
Waar gaat het fout?
Greets!