2011-09-20 72 views
0

我已經看到了其他一些帖子,但從來沒有真正看到任何人指出可能導致它和什麼解決方案。DropDownList Flex 4.5不工作

我有一個loginview,我有一個數據模型和演示模型,通過歐芹注入。

下拉列表突然停止「工作」。該列表綁定到DM中的一些數據。你可以點擊列表,但下拉菜單從不發生,我根本沒有任何錯誤。它只是不顯示。

該應用程序是一個AIR應用程序,並且如果這使得任何區別,LoginView在主窗口中。

<?xml version="1.0" encoding="utf-8"?> 
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         xmlns:view="com.guhsd.academicnotifier.icon.view.*" 
         creationComplete="onCreationComplete(event)" 
         alpha="0"> 


    <fx:Script> 
     <![CDATA[ 
      import spark.filters.DropShadowFilter; 
      import com.greensock.TweenMax; 
      import com.greensock.easing.Quad; 
      import com.guhsd.academicnotifier.events.LoginEvent; 
      import com.guhsd.academicnotifier.login.model.LoginDM; 

      import mx.binding.utils.BindingUtils; 
      import mx.events.FlexEvent; 

      [Inject] 
      public var pm : LoginPM; 
      [Inject] 
      [Bindable] 
      public var dm : LoginDM; 
      [Bindable] 
      public var fieldsValid : Boolean; 

      [MessageHandler(selector="isloggedin")] 
      public function loggedinHandler(e : Event) : void 
      { 
       TweenMax.to(this, 1, { autoAlpha:0 }); 
      } 

      private function onCreationComplete(event : FlexEvent) : void 
      { 
       setTimeout(checkLoginKey, 500); 

      } 

      private function showOrHide(show : Boolean) : void 
      { 
       var alpha_value : int; 
       var scaleXY : int = 1; 
       var newVertical : Number = 0; 
       if (show) 
       { 

        alpha_value = 1; 
       } 
       else 
       { 

       } 

       TweenMax.to(this, 0.25, { autoAlpha:alpha_value, verticalCenter:newVertical, ease:Quad.easeOut }); 
      } 

      private function checkLoginKey() : void 
      { 
       var loginEvent : LoginEvent = new LoginEvent(LoginEvent.CHECK_LOGIN_KEY); 
       dispatchEvent(loginEvent); 

       setTimeout(function() : void 
       { 
        BindingUtils.bindSetter(showOrHide, dm, "showview"); 
        BindingUtils.bindSetter(setDefaultSchoolSelection, dm, "lastSelectedSchool"); 
       }, 2000); 
      } 

      private function setDefaultSchoolSelection(schoolName : String) : void 
      { 
       if (schoolName != null) 
       { 
        for (var i: String in cb_schoollist.dataProvider) 
        { 
         var name : String = cb_schoollist.dataProvider.getItemAt(int(i)).Name; 

         if (schoolName == name) 
          cb_schoollist.selectedIndex = int(i); 
        } 
       } 
      } 
     ]]> 
    </fx:Script> 

    <fx:Metadata> 
     [Event(name="checkLoginKey", type="com.guhsd.academicnotifier.events.LoginEvent")] 
     [ManagedEvents("checkLoginKey")] 
    </fx:Metadata> 

    <s:Rect top="0" bottom="0" left="0" right="0" 
      topRightRadiusX="50" topRightRadiusY="50"> 
     <s:fill> 
      <s:LinearGradient> 
       <s:GradientEntry color="#667178"/> 
       <s:GradientEntry color="#8C9BA5"/> 
      </s:LinearGradient> 
     </s:fill> 
    </s:Rect> 
    <s:VGroup horizontalCenter="0" verticalAlign="middle" gap="0" 
       paddingTop="20" 
       paddingBottom="10" paddingLeft="50" 
       width="100%"> 
     <s:HGroup verticalAlign="middle" paddingLeft="40"> 
      <s:Label text="Academic and Disipline Referrals" 
        color="#FF9900" fontSize="20"/> 
      <mx:Spacer width="100%"/> 
      <s:Label color="#cb0000" text="{dm.error_message}" 
        width="250"/> 
     </s:HGroup> 
     <s:HGroup width="100%" paddingRight="100" paddingTop="10"> 
      <mx:Spacer width="100%"/> 
      <s:Form id="form"> 

       <s:FormItem label="Username"> 
        <s:TextInput id="tx_username" width="200" 
           text="{dm.user_name}" 
           enter="pm.login(tx_username.text, tx_password.text, cb_schoollist.selectedItem.Name);"/> 
       </s:FormItem> 
       <s:FormItem label="Password" 
          requiredIndicatorSource=""> 
        <!-- sf88fd --> 
        <s:TextInput id="tx_password" width="200" 
           text="" enter="pm.login(tx_username.text, tx_password.text, cb_schoollist.selectedItem.Name);" 
           displayAsPassword="true"/> 
       </s:FormItem> 
       <s:FormItem label="School"> 
        <s:DropDownList id="cb_schoollist" 
           dataProvider="{dm.school_list}" 
           labelField="Name" 
           selectedIndex="0" width="100%" 
           close="pm.setVPList(event.currentTarget.selectedItem)"/> 
       </s:FormItem> 
       <s:FormItem> 
        <s:HGroup width="200"> 
         <mx:Spacer width="100%"/> 
         <s:Button label="Cancel" click="pm.quit()"/> 
         <s:Button label="Login" click="{pm.login(tx_username.text, tx_password.text, cb_schoollist.selectedItem.Name);}"/> 
        </s:HGroup> 
       </s:FormItem> 
      </s:Form> 
     </s:HGroup> 
     <s:HGroup verticalAlign="middle" paddingLeft="40" paddingBottom="20"> 
      <view:Icon/> 
      <s:VGroup filters="{[ new DropShadowFilter() ]}" gap="0"> 
       <mx:Spacer height="10"/> 
       <s:Label text="GUHSD" color="#ffffff" fontSize="30"/> 
       <s:Label text="Academic Referrals" color="#ffffff" fontSize="25"/> 
      </s:VGroup> 
     </s:HGroup> 
    </s:VGroup> 

</s:Group> 

回答

0

它沒有使用注射嗎?

我不知道這是否是相關的,但我們在以前的版本解決了類似的問題,在做這樣的事情:

combobox.dataProvider = Model.getInstance()數據; combobox.dropdown.dataProvider = Model.getInstance()。data;

它是SDK 3.5中Combobox的解決方法,但它可能是一個類似的問題。

+0

那麼我解決了它,但從來沒有真正弄清楚是什麼問題。該視圖位於主應用視圖中,但在creationComplete之後,我創建了一個新的Spark窗口。一旦我停止將其添加到新的AIR窗口,並將主窗口應用程序中的長視圖留下,問題就消失了。 – mattwallace