Flex 3: скрытие элементов, созданных повторителем - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть повторитель, который создает пользовательский компонент с именем «Блок».Мне нужно сделать так, чтобы, когда пользователь нажимает кнопку, все блоки, созданные повторителем, имели видимое поле, равное false (и затем true, когда кнопка нажимается снова).

Вот некоторые изкод, который у меня есть сейчас:

<mx:Repeater id="indPositions" dataProvider="{projectPositions}" startingIndex="0">
        <components:block height="24"
            width="100%" id="thisBlock" visible="true" horizontalScrollPolicy="off"  
            oneDay="{oneDay}"
        />
    </mx:Repeater>

Вот кнопка, которую пользователь нажмет, чтобы показать / скрыть блоки:

<mx:Button id="showHideButton" label="Show Project" x="{addBlock.x + addBlock.width + 2}" click="showProjectSwitch();" />

Вот функция showProjectSwitch ():

public function showProjectSwitch():void {
            if (showHideButton.label == "Hide Project")
            {   
                showHideButton.label = "Show Project";
                indPositions.visible = false;
                thisProject.height = 65;
            }
            else
            {   
                showHideButton.label = "Hide Project";
                indPositions.visible = true;
                thisProject.height = projectHeight ;
            }
        }

Я попытался установить projectRP.visible = "true / false", но это не сработало: (

Я также попытался обернуть холст вокруг повторителя, но когда я это сделал ...повторитель запускался только один раз, несмотря на то, что у меня начальный_индекс = "0" и число = "16". Затем я удалил теги холста, и повторитель выполнил правильное количество раз.меня нет?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Вот как я решил это ... так как имя переменной thisBlock объявляется каждый раз, когда создается блок, вся эта информация сохраняется в массиве. Узнав об этом, я смог создать цикл для каждого цикла в функции, вызываемой при нажатии кнопки «показать / скрыть» ... для каждого цикла происходит что-то вроде этого:

for (var I:int = 0; i < dataprovidername.length; i++)
    thisBlock[i].visible = true/flase;

Надеюсь, что это может помочь кому-то еще в будущем.

0 голосов
/ 28 апреля 2011

Самый простой способ добиться того, чего вы хотите, - это просто использовать привязку данных, как вы это делали для значения "oneDay".

<mx:Repeater id="indPositions" dataProvider="{projectPositions}" startingIndex="0">
    <components:block height="24"
        width="100%" id="thisBlock" visible="true" horizontalScrollPolicy="off"  
        oneDay="{oneDay}"
        visible="{showBlocks}"
    />
</mx:Repeater>
<mx:Boolean id="showBlocks" />

[Изменить для большей ясности] ДляЧтобы изменить видимость блоков, необходимо установить значение showBlocks, например, так:

showBlocks = true;

или

showBlocks = false;
...