在一个孩子后刷新中继器,我有以下结构的XML元素:的Flex 3:添加子
<position>
<startOffset>*NUMBER*</startOffset>
<numDays>*NUMBER*</numDays>
<role>*String*</role>
<student>*String*</student>
<conflict>*BOOLEAN*</conflict>
</position>
然后我用一个转发器,列出每个出到屏幕上。我创建了一个用于创建位置的按钮。因此,一旦用户点击该按钮,我调用下面的函数:
private function addPosition(index:Number):void
{
var tempObject:XML = XML("<position><startOffset>0</startOffset><numDays>3</numDays><role>1C</role><student> </student><conflict>false</conflict></position>");
projectPositions.appendChild(tempObject);
projectHeight += 35;
parentApplication.checkOverlap();
}
上述函数创建一个新的XML对象,把一些默认值,并将其添加到项目位置的列表。在追加新信息后,我将项目的高度做得更大,然后检查以确保新项目的高度不与其他任何项目重叠......但这些信息与此帖子无关。
我的问题是这样的 - 一旦我将一个新的子项追加到XML变量,它不会出现在屏幕上。是否有一个“刷新”或“重新渲染”的选项,我可以做的中继器,以使新的儿童秀?
编辑 - 其他信息
这里的变量声明(信息是从父来):
[Bindable] public var projectPositions:XML;
这里的中继器(它实际上调用另一个孩子):
<mx:Repeater id="indPositions" dataProvider="{projectPositions.children()}" startingIndex="0">
<components:block height="38" alpha=".75"
id="thisBlock" visible="true" horizontalScrollPolicy="off"
width="{projectWidth}"
oneDay="{Number(oneDay)}"
position="{indPositions.currentItem.role}"
offSet="{indPositions.currentItem.startOffset}"
numDays="{indPositions.currentItem.numDays}"
sName="{indPositions.currentItem.student}"
isConflict="{indPositions.currentItem.conflict}"
projectName="{projectTitle}"
totalSpan="{returnSpan()}"
projectsHttp="{projectsHttp}"
allStudents="{allStudents}"
thisBlockID="{indPositions.currentIndex}"
/>
</mx:Repeater>
然后,一旦用户点击“添加位置”按钮,将调用以下函数:
private function addPosition(index:Number):void
{
var tempObject:XML = XML("<position><startOffset>0</startOffset><numDays>3</numDays><role>" + possiblePositions[index] + "</role><student> </student><conflict>false</conflict></position>");
positionsList.addItem(tempObject);
projectHeight += 35;
parentApplication.checkOverlap();
}
这是我第一次尝试这样做(当我发这个帖子)...然后我你的答复后,改变了一些东西,并结束了与此:
声明:
[Bindable] public var projectPositions:XML;
[Bindable] public var projectXMLList:XMLList = XMLList(projectPositions);
[Bindable] public var projectPositionsXLC:XMLListCollection = XMLListCollection(projectXMLList);
中继器:
<mx:Repeater id="indPositions" dataProvider="{projectPositionsXLC}" startingIndex="0">
addPosition功能:
private function addPosition(index:Number):void
{
var tempObject:XML = XML("<position><startOffset>0</startOffset><numDays>3</numDays><role>" + possiblePositions[index] + "</role><student> </student><conflict>false</conflict></position>");
projectPositionsXLC.addItem(tempObject);
projectHeight += 35;
parentApplication.checkOverlap();
}
一旦我做出改变,并使用的XMLListCollection作为中继器的数据提供程序,信息在屏幕上:(不再负载
我用作数据提供者的变量是这样声明的:[Bindable] public var projectPositions:XML;并在我的转发器本身,我的dataprovider是这样定义的:dataProvider =“{projectPositions.children()}” – Brds 2011-05-23 17:36:19
对。它是'XMLList'。尝试使用'XMLListCollection'来代替。并在那里添加新的值。 – Constantiner 2011-05-23 17:38:09
我试图转换XML变量我目前必须到一个xmllistcollection,然后使用它,并最终得到相同的结果...我可以看到,通过警报,该项目已添加,但它不显示给用户。 – Brds 2011-05-23 18:00:08