Flex 3:隐藏由转发器创建的元素

时间:2011-04-27 20:02:22

标签: flex3 repeater visible

我有一个转发器,可以创建一个名为“Block”的自定义组件。我需要这样做,以便当用户单击按钮时,由转发器创建的所有块都将其可见字段设置为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”,但它不起作用:(

我还尝试在转发器周围包裹画布,但是当我这样做时......转发器只运行一次,尽管我有startingIndex =“0”和count =“16”。然后我删除了画布标签,转发器运行了正确的次数。

有人能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

实现您想要的最简单方法就是使用数据绑定,就像您对“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;

答案 1 :(得分:0)

以下是我如何解决它...因为每次创建一个块时都会声明变量名“thisBlock”,所有这些信息都会存储在一个数组中。在学习了这个之后,我能够在按下显示/隐藏按钮时调用的函数中为每个循环创建一个...对于每个循环都是这样的:

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

希望将来可以帮助其他人。