Выберите значение DropDownList с помощью ActionScript в Flex 4 - PullRequest
2 голосов
/ 08 марта 2011

Я уверен, что это легко, но я долго искал, как выбрать элемент DropDownList с помощью ActionScript. В этом сценарии я хотел бы иметь возможность указать selectedItem на основе ddlLabel или ddlData

<?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>

1 Ответ

3 голосов
/ 08 марта 2011

Есть несколько способов сделать это - если вам нужно сделать это, используя метку или значение, вы можете выполнить цикл через массив array следующим образом:

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 определением класса, если вам требуется хранить более сложную информацию о часовых поясах.

...