2009-06-23 4 views
1

Ich habe ein seltsames Problem mit der Combobox in Flex. In dem folgenden Code:Flex Combobox seltsames Problem

public function rollCombo(cmb:ComboBox,value:String):void 
    { 
      if(value=='') return; 
      var i:int=0; 
      cmb.selectedIndex = 0; 
      var dp1:XMLListCollection = (XMLListCollection(cmb.dataProvider); 
      trace(value); 
      while(dp1[i]!=value && i<dp1.length) 
       cmb.selectedIndex = ++i; 
       cmb.validateNow(); 
       cmb.validateDisplayList(); 

      trace(cmb.selectedLabel); 
    } 

in einem Beispielfall, am Ende der Ausführung der Funktion, bin i 7 und cmb.selectedLabel ist „xyz“ (gemäß der Trace-Ausgabe), aber die Etikett angezeigt in der Combobox ist eine andere.

Auch das ist eher unberechenbar. Es passiert manchmal und nicht immer.

Antwort

2

Der letzte ausgewählteIndex liegt außerhalb des Bereichs, da Sie eine Vorinkrementierung verwenden. Das bedeutet, dass ich vor dem Test dp1.length wird und auch selectedIndex zugewiesen wird. Das könnte das seltsame Verhalten erklären. Wahrscheinlich möchten Sie die Post-Inkrementierung verwenden.

Auch. Das einzige, was in diesem während ausgeführt wird sieht

cmb.selectedIndex = ++i; 

Ich weiß nicht, zu sein, wenn es das ist, was Sie wollten, aber Sie könnten einige „{}“ es brauchen.