Flex ArrayCollection中Object 属性重新赋值
1.假如ArrayCollection如下
var arrDataList:ArrayCollection=new ArrayCollection();
var item:Object=new Object();
item.BANK_ABSTRACT="银行对账单余额";
item.BANK_POSTINGDATE="";
item.BANK_DOCNUM="";
item.BANK_MONEY=bankBalance;
item.BANK_REASON="";
item.COMPANY_ABSTRACT="公司银行存款账面余额";
item.COMPANY_POSTINGDATE="";
item.COMPANY_DOCNUM="";
item.COMPANY_MONEY=bookBalance;
item.COMPANY_REASON="";
2.DataGrid定义如下:
<mx:AdvancedDataGrid id="datagrid" width="100%" height="200" dataProvider="{arrDataList}"
verticalScrollPolicy="auto" editable="true" itemEditEnd="onItemEditEnd(event)">
<mx:groupedColumns>
<mx:AdvancedDataGridColumnGroup headerText="银行">
<mx:AdvancedDataGridColumn headerText="摘要" dataField="BANK_ABSTRACT">
<!--
<mx:itemRenderer>
<mx:Component>
<mx:Label>
<mx:Script>
<![CDATA[
override public function set data(value:Object):void
{
super.data=value;
if(value.BANK_ABSTRACT=="+")
{
this.text="加:企收银未收";
}
else{
this.text="减:企付银未付";
}
}
]]>
</mx:Script>
</mx:Label>
</mx:Component>
</mx:itemRenderer>
-->
</mx:AdvancedDataGridColumn>
<mx:AdvancedDataGridColumn headerText="入账日期" dataField="BANK_POSTINGDATE"/>
<mx:AdvancedDataGridColumn headerText="原始单据号码" dataField="BANK_DOCNUM"/>
<mx:AdvancedDataGridColumn headerText="金额(元)" dataField="BANK_MONEY"/>
<mx:AdvancedDataGridColumn headerText="未达原因" dataField="BANK_REASON"/>
</mx:AdvancedDataGridColumnGroup>
<mx:AdvancedDataGridColumnGroup headerText="公司">
<mx:AdvancedDataGridColumn headerText="摘要" dataField="COMPANY_ABSTRACT"/>
<mx:AdvancedDataGridColumn headerText="入账日期" dataField="COMPANY_POSTINGDATE"/>
<mx:AdvancedDataGridColumn headerText="原始单据号码" dataField="COMPANY_DOCNUM"/>
<mx:AdvancedDataGridColumn headerText="金额(元)" dataField="COMPANY_MONEY"/>
<mx:AdvancedDataGridColumn headerText="未达原因" dataField="COMPANY_REASON"/>
</mx:AdvancedDataGridColumnGroup>
<mx:AdvancedDataGridColumn headerText="操作"/>
</mx:groupedColumns>
</mx:AdvancedDataGrid>
3.DataGrid单元格编辑后需要获取新值,并把新值更新到ArrayCollection中,那么,DataGrid单元格编辑完成后事件方法如下:
private function onItemEditEnd(event:AdvancedDataGridEvent):void{
var col:AdvancedDataGridColumn=datagrid.columns[event.columnIndex];
var newValue:String=datagrid.itemEditorInstance[col.editorDataField];
var dsFieldName:String=event.dataField;
arrDataList.getItemAt(event.rowIndex)[dsFieldName]=newValue;
}
注意上面 arrDataList.getItemAt(event.rowIndex)[dsFieldName]=newValue;代码部分,动态给属性重新赋值时,需要用[]把属性变量括起来。
还没有评论,来说两句吧...