如何动态地将记录添加到flex中的数组中
How to dynamically append a record into an Array in flex?
我在flex中有一个mxml视图,我需要动态地将数据添加到DataGrid组件。
这是初始化DataGrid的地方:
<mx:DataGrid id="myGrid" width="100%"
dataProvider="{initDG}" >
<mx:columns>
<mx:DataGridColumn dataField="Identifier" />
<mx:DataGridColumn dataField="Name" />
</mx:columns>
</mx:DataGrid>
这是脚本部分:
private var DGArray:Array = new Array;
[Bindable]
public var initDG:ArrayCollection;
private function onCreation():void{
initData();
}
public function initData():void {
initDG=new ArrayCollection(DGArray);
}
private function onShow():void{
for (var child:Object in children) {
var details:Array = null;
if (child instanceof String) {
var test:String = children[child].toString();
details = test.split(",");
}
//Here I need to make an object like this one:
// record = {Identifier: details[0] , Name: details[1]};
this.DGArray.push(the record created);
}
}
我使用这个方法是因为如果DGArray
是一个静态数组,它可以工作:
private var DGArray:Array = [
{Identifier:'001', Name:'Slanted and Enchanted'},
{Identifier:'002', NAme:'Brighten the Corners'}];
谁能告诉我如何创建记录并将其添加到DGArray?谢谢:)
总之
通过ArrayCollection
实例添加或删除项目,而不是通过Array
实例。
为什么
ArrayCollection
-顾名思义-实际上只是Array
的包装器,向其添加了一些在使用Flex框架时方便使用的功能。
所以当你做
initDG.addItem(theNewItem);
的新项目也将自动添加到基础数组。
此外,该函数还将调度一个CollectionEvent,它将通知DataGrid
其dataProvider中的数据已经更改,并且应该重新绘制以反映这些更改。
另一方面,如果你做了
DGArray.push(theNewItem);
就像你做的那样,你直接改变底层数组。这并没有破坏任何东西;您仍然可以通过例如ArrayCollection.getItemAt()来访问新项目,但是DataGrid从未通知过更改,因此它没有重新绘制并继续显示旧数据。
相关文章:
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在映射数组中添加换行符
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- 我可以在json对象中添加一个函数吗
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何添加浮动和非浮动,其他
- 添加文字和评论功能更新Div
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 在函数中添加数组元素的数值
- 如何将歌曲添加到jPlayer
- 在html Select中添加搜索
- Java脚本时间添加
- FabricJs-限制主对象内添加对象的移动区域
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 如何在Google柱状图中动态添加行/列
- 如何动态地将记录添加到flex中的数组中
- 如何在两个flex样式的行之间添加一个元素,并使下面的行根据新元素的高度向下移动