2

アプリケーションにコンボ ボックスがあります。「ステータス」という変数もあります。Status 変数の値が 5 または 6 の場合にのみコンボ ボックスを有効にしたいのですが、それ以外の場合は、コンボ ボックスの値を変更できないはずです。以前の値のみを持つ必要があります..

コンボボックスを無効にするクリックイベントを作成しました。しかし、コンボボックスが無効になっているにもかかわらず、コンボボックスのドロップダウンリストが表示され、ドロップダウンで他の値を選択すると変更されます..その後、無効になります..

これを回避する方法は?ドロップダウン機能自体を無効にしたい。これは私が書いたコードです。誰かが私を案内してください。

<mx:FormItem label="Review Status:" width="100%" horizontalAlign="right">
  <mx:HBox>
     <mx:Label  width="30"/>
        <mx:ComboBox id="reviewStatus" dataProvider="{Status}" 
                     width="150" click="onStatusChange(event)"/> 
  </mx:HBox>

アクション スクリプト部分:

private function onStatusChange(event:Event):void
{
  var i:int;
  for(i=0;i<defectDetails.length;i++)
  {
    var defStatusId:String=defectDetails.getItemAt(i).DefectStatusId;
    if(defStatusId=="5"){
               reviewStatus.enabled=true;
    }  
    else  if(defStatusId=="6"){
               reviewStatus.enabled=true;
    }
    else{
               reviewStatus.enabled=false;
             //reviewStatus.selectedItem.label="Review";
             reviewStatus.toolTip="Status can be changed only if Defect Status is Verified or Deferred.";

              //Alert.show("Status can be changed only if defect status is verified or deferred");
    }
   }
  }

Change イベントも使用すると、初めて値が変更されます。その後、コンボボックスは無効になります。ステータスが 5 または 6 でない場合、同じ値を保持してコンボ ボックスを無効にする方法は?

4

3 に答える 3

0

reviewStatus.close()有効をfalseに設定する前に呼び出します。

なぜclickコンボボックスのイベントでそれをしているのですか?の変更イベントdefectDetails(またはdefectDetailsそのdataProviderとして使用するコントロール)で実行することをお勧めします。

ところで、そこには別の潜在的なバグがありますenabled。ループで値を設定していて、設定後にループを壊していないということです。の最終的な値はreviewStatus.enabled、最後の項目のみに依存します- defectDetails.getItemAt(defectDetails.length - 1)

また、trueの場合、ツールチップを通常に戻すことはありませんenabled

于 2009-11-21T08:30:13.353 に答える
0

なぜループなのか?selectedItemをステータス変更のIntとして取得するだけではありませんか?

reviewStatus.enabled = ((reviewStatus.selectedItem as Int)) == 5 || (reviewStatus.selectedItem as Int) == 6) ? false : true;

一度無効にすると、StatusChangeイベントを受信できなくなるでしょう。

于 2009-11-21T08:36:45.787 に答える
0

おそらく、「reviewStatus」の「有効」でバインド関数を使用できます。お気に入り、

<mx:ComboBox id="reviewStatus" enabled = {checkEnabledForReviewStatus(defectStatusId)} />

そしてスクリプト部分では、

private function checkEnabledForReviewStatus(defectStatusId:String):Boolean 
{
    return (defectStatusId == "5" || defectStatusId == "6") ? true: false;
}
于 2009-11-27T16:59:25.310 に答える