2

これは簡単なことだと思いますが、actionscript で DropDownList 要素を選択する方法をしばらく探していました。このシナリオでは、ddlLabel または ddlData に基づいて selectedItem を指定できるようにしたいと考えています。

<?xml version="1.0" encoding="utf-8"?>

<fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.events.FlexEvent;

        [Bindable]
        protected var timezonesArray:ArrayCollection = new ArrayCollection([
            {ddlLabel:"Eastern Time", ddlData:"EST"}, 
            {ddlLabel:"Central Time", ddlData:"CST"}, 
            {ddlLabel:"Mountain Time", ddlData:"MST"}, 
            {ddlLabel:"Pacific Time", ddlData:"PST"}
        ]);

        protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
        {
            // I'm looking to select an element via actionscript here, based on ddlLabel or ddlData
        }

    ]]>
</fx:Script>

<mx:Form>
    <s:DropDownList id="ddlTimezones" dataProvider="{timezonesArray}" labelField="ddlLabel"/>
</mx:Form>

4

1 に答える 1

3

これを行うにはいくつかの方法があります。ラベルまたは値を使用して行う必要がある場合は、次のように arraycollection をループできます。

protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
    var searchTerm:String = "EST";
    var result:* = null;
    for each(var zone:* in timeZonesArray)
    {
        if(searchTerm == zone.ddlData)
        {
            result = zone;
            break;
        }
    }
    ddlTimezones.selectedItem = result;
}

ただし、タイム ゾーンへの参照を個別に保持するか、アプリの他の部分から取得する場合は、よりクリーンに行うことができます。

import mx.collections.ArrayCollection;
import mx.events.FlexEvent;


var EST:Object = {ddlLabel:"Eastern Time", ddlData:"EST"};
var CST:Object = {ddlLabel:"Central Time", ddlData:"CST"};
var MST:Object = {ddlLabel:"Mountain Time", ddlData:"MST"};
var PST:Object = {ddlLabel:"Pacific Time", ddlData:"PST"};

[Bindable]
protected var timezonesArray:ArrayCollection = new ArrayCollection([
    EST, 
    CST, 
    MST, 
    PST
]);

protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
    ddlTimezones.selectedItem = EST;
}

この方法では、オブジェクトに手を伸ばすのではなく、オブジェクト全体のレベルにとどまっているため、リスト内のすべてのオブジェクトを調査することを心配する必要はありません。また、タイム ゾーンに関するより複雑な情報を保存する必要が生じた場合に、JSON スタイル オブジェクトのリストをクラス定義に置き換えたい場合も簡単になります。

于 2011-03-08T16:30:27.653 に答える