Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
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 09/12/2011, 17h10   #1
Invité régulier
 
Inscription : juillet 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 30
Points : 9
Points : 9
Par défaut dropDown width non mis à jour

Bonjour à vous tous

Je reste bloqué (depuis très longtemps je n'ai trouvé la solution) sur une incohérence du dropDown de combobox mis à jour.

C'est à dire.

J'ai le dataprovider de combobox remplis, son dropDown correspondant bien au élément et sa largeur correspondant bien à la longueur la plus grande de son contenu.

Hors, lors d'une mise à jour, quand je modifie le dataprovider en y instaurant une nouvelle liste de valeur, le contenu du dropDown est correct mais sa longueur ne l'est (width). Le width garde celui du précédent contenu et n'est pas recalculer en fonction de la nouvelle liste déposé.

Je sais que ce problème était un bug ancré au sdk 3.5 (que je n'ai jamais réussis à réparé), hors je suis passé au sdk 4.1.0 et j'ai toujours ce même bug. Etrange étrange.

Code :
1
2
3
4
5
6
7
 
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="300">
 
...
...
 
<mx:ComboBox id="cRegionContinent" maxWidth="350" x="168" y="100"  change="{clickStateContinent()}" labelField="{Application.application.langue}"/>
La mise à jour ou "listeRegionContinent" est une arrayCollection

Code :
1
2
 
prechRap.cRegionContinent.dataProvider = listeRegionContinent;
Rien d'anormal dans le code.


Hors sur un autre projet tout basic en 4.1.0 ou je veux tester ça, mes largeur de dropDown combobox se mettent bien à jour en fonction de son contenu.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				layout="absolute" width="100%" height ="8001" verticalScrollPolicy="off" 
				horizontalScrollPolicy="off" initialize="initializeHandler(event)" 
				creationComplete="creationCompleteHandler(event)"
				backgroundGradientColors= "[#990066, #0066f]"
				backgroundGradientAlphas= "[0.4, 0.5]">
 
...
...
 
[Bindable]
public var listeMenu3 : ArrayCollection;
 
....
....
 
private function addList()
			{
				listeMenu3 = new ArrayCollection([
					{label : "Accueil", data : "Accueil"},
					{label : "L'autreuytrytcuyiuiiuytxrtcvyubi", data : "L'autre"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
				]);
			}
 
			private function addList2()
			{
				listeMenu3 = new ArrayCollection([
					{label : "Accueil", data : "Accueil"},
					{label : "L'autreuytrytcuyiuiiuytxrtcvyubiyyyyyyyyyyyyyyyyyyyyyyyy", data : "L'autre"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
					{label : "tchhhh", data : "tchhhh"},
 
				]);
			}
 
....
....
 
<mx:Button x="48" y="0" label="Button" click="addList()"/>
<mx:Button x="48" y="50" click="addList2()" label="but"/>
<mx:ComboBox x="190" y="0" dataProvider="{this.listeMenu3}" labelField="label" maxWidth="250"></mx:ComboBox>
Dans le deuxième exemple, en cliquant sur le bouton "buton" ou "but" la liste du dataprovider change. J'ai bien une liste différente, le contenu et la largeur du dropdown est correct.

Je ne vois pas la différence entre les deux codes; alors auriez vous une idée de pourquoi le rendu diffère ?

Migration foireuse de flex ? (il n'y a juste qu'a changer de compilateur en le spécifiant à eclipse (que j'utilise) pourtant ).

Merci
zanteskuken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 19h48   #2
Invité régulier
 
Inscription : juillet 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 30
Points : 9
Points : 9
Le problème (Bug) n'as pas changé, alors j'ai trouvé une astuce pour ceux qui serai intéressé (dommage que ce bug persiste);

Ajouter l’événement suivant

Code :
resize="{cbResize()}" à votre combobox
Code :
1
2
3
4
5
6
7
8
private function cbResize():void
{
	if(this.myCombo.dropdown != null)
	{
		this.myCombo.dropdown.width = this.myCombo.width;
	}
	this.myCombo.initialize();
}
zanteskuken est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h21.


 
 
 
 
Partenaires

Hébergement Web