Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/10/2011, 14h07   #1
Membre habitué
 
Homme Thomas Escolan
Architecte JEE/Spring - ScrumMaster
Inscription : juin 2010
Messages : 198
Détails du profil
Informations personnelles :
Nom : Homme Thomas Escolan
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Architecte JEE/Spring - ScrumMaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2010
Messages : 198
Points : 115
Points : 115
Par défaut modifier une ArrayCollection triée

Bonjour à tous,

J'affiche à l'écran des éléments grâce à une ArrayCollection. Ces éléments peuvent être ajoutés, modifiés, supprimés tandis que l'affichage reste synchronisé. Ça, ça fonctionnait.

Sauf que depuis que j'ai mis un Sort à la liste, rien ne va plus !
Citation:
Error: No items to search.
at mx.collections::Sort/findItem()
at mx.collections::ListCollectionView/getItemIndex()
at com.xxx.notariat.tiers.main.components.abstracts::AbstractTiersEnregistrementBox/supprimerItemRepresentants()
at com.xxx.notariat.tiers.main.components.helpers:opUpButtonMenuHandler/clickHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()
at mx.controls::Menu/dispatchEvent()
at mx.controls::Menu/mouseUpHandler()
Voici des extraits de mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
...
protected var _listeRepresentants:ArrayCollection = new ArrayCollection();
...
public function AbstractTiersEnregistrementBox():void {
	super();
...
	this.addEventListener(FlexEvent.CREATION_COMPLETE, init);
}
 
private function init(event:Event):void {
	var principalSorter:SortField = new SortField("principal");
	var nomSorter:SortField = new SortField("nom", true);
	var arraySorter:Sort = new Sort();
	arraySorter.fields = [principalSorter, nomSorter];
	_listeRepresentants.sort = arraySorter;
}
...
[Bindable]
public function get listeRepresentants():ArrayCollection {
	return _listeRepresentants;	// le tri est configuré dans #init
}
 
public function supprimerItemRepresentants(tiers:Tiers):void {
	var index:int = _listeRepresentants.getItemIndex(tiers);
	_listeRepresentants.removeItemAt(index);
}
Quelqu'un peut-il me dire comment sortir de l'impasse, SVP ?
Merci (beaucoup) d'avance.
tooms4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h16   #2
Membre habitué
 
Homme Thomas Escolan
Architecte JEE/Spring - ScrumMaster
Inscription : juin 2010
Messages : 198
Détails du profil
Informations personnelles :
Nom : Homme Thomas Escolan
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Architecte JEE/Spring - ScrumMaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2010
Messages : 198
Points : 115
Points : 115
Si je comprends bien, c'est parce que getItemIndex renvoie tj -1
N'est-ce pas évitable ?

J'ai lu qu'une solution était de désactiver le filtre/sort pendant l'opération. N'y a-t-il pas de solution plus élégante ?

Merci encore, de m'avoir lu au moins.
tooms4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 16h20   #3
Membre habitué
 
Homme Thomas Escolan
Architecte JEE/Spring - ScrumMaster
Inscription : juin 2010
Messages : 198
Détails du profil
Informations personnelles :
Nom : Homme Thomas Escolan
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Architecte JEE/Spring - ScrumMaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2010
Messages : 198
Points : 115
Points : 115
Par défaut j'hallucine...

Bonjour à tous,

J'ai finalement implémenté la solution suivante :
Code :
1
2
3
4
5
6
7
8
9
10
// en mode trié #getItemIndex renvoit tj -1 ; il faut désactiver le tri...
var arraySorter:Sort = _listeRepresentants.sort;
_listeRepresentants.sort = new Sort();
 
var index:int = _listeRepresentants.getItemIndex(tiers);
_listeRepresentants.removeItemAt(index);
 
// ... le temps de trouver l'item à supprimer et faire la modification
_listeRepresentants.sort = arraySorter;
_listeRepresentants.refresh();
Or il se trouve que CA A FONCTIONNE UN TEMPS.
Mais aujourd'hui je suis revenu sur du code aux alentours et là PATATRA : erreur à l'exécution comme quoi "appel à #removeItemAt avec -1", etc.

Je n'y comprends rien. Avant de faire une boucle avec ajout conditionnel dans une liste temporaire pour finalement réinjecter dans la liste triée, je voulais vous soumettre ce cas ETRANGE et vérifier avec vous que je n'ai pas fait un truc de travers (du genre "_listeRepresentants.sort = null;" hé !).

Merci d'avance.
tooms4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h11.


 
 
 
 
Partenaires

Hébergement Web