2009-06-23 94 views
1

我在Flex中遇到了一個奇怪的問題。在下面的代碼:Flex Combobox奇怪的問題

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); 
    } 
在一個示例情況下

,在功能的執行結束時,i是7,和 cmb.selectedLabel是「XYZ」(根據跟蹤輸出),但在組合框中顯示的標籤 是不同的。

此外,這是相當不可預測的。它有時會發生,並不總是。

回答

2

最後一個selectedIndex超出範圍,因爲您使用預先增量。這意味着我在測試之前變成了dp1.length,並且它也被分配給了selectedIndex。這可能會解釋怪異的行爲。你可能會想使用後增量。

另外。即獲取,雖然執行的唯一的事情看起來是

cmb.selectedIndex = ++i; 

我不知道如果這是你想要的,但你可能需要一些「{}」在那裏。