flex DataGrid自定义 itemrenderer

DataGrid自定义 itemrenderer 步骤[]

1、创建一个自定义组件 mx:checkbox,并定义一个函数用于状态改变时,向外派发事件。

2、自定义控件中的函数用 this.parentapplication.dispatchevent(new 自定义的事件(data,chk.selected)

parentapplication. [指向应用程序的application]

3、自定义事件 cartEvent()

cartEvent:Event{

定义要让事件接收者要接收的变量var1,变量var2

function 构造函数(_data:object,_isvar2):void{

var1=_data;

var2=_isvar;

super("事件名") -------- 事件的名称

}

在其构造函数中,定义了参数,参数赋给事件的变量,当接收函数接收这个事件时就可以访问事件中定义的变量了

4、在主程序中的initApp()中监听事件

addEventListener("事件名",处理函数)

5、在处理函数中接收 evt中的变量并处理

evt.var1

另一种方法:

直接在DataGrid的列下定义

<mx:itemRenderer>

<mx:Component>

<mx:LinkButton 内部控件 click="outerDocument.buttonDel()">

//调用外部的函数,必须用 outerDocument

<<mx:Component>

</mx:itemRenderer>

示例:

// Define event listener for the itemEditEnd event.

private function getCellInfo(event:DataGridEvent):void {

// Get the cell editor and cast it to TextInput.

var myEditor:TextInput =

TextInput(event.currentTarget.itemEditorInstance);

// Get the new value from the editor.

var newVal:String = myEditor.text;

// Get the old value.

var oldVal:String =

event.currentTarget.editedItemRenderer.data[event.dataField];

// Write out the cell coordinates, new value,

// and old value to the TextArea control.

cellInfo.text = "cell edited./n";

cellInfo.text += "Row, column: " + event.rowIndex + ", " +

event.columnIndex + "/n";

cellInfo.text += "New value: " + newVal + "/n";

cellInfo.text += "Old value: " + oldVal;

}

7、DataGrid的选择项可由 selectitem.data 得到后面加上 selectedItem.data.字段名。可得到此字段的值

datagrid 的 dataprovider 可由xmllistcollection 得到

var data_xml:XMLListCollection=dg_szjz.dataProvider as XMLListCollection;

var data_array:Array=data_xml.toArray();

var data_myarray:ArrayCollection=new ArrayCollection(data_array)

DataGrid绑定 data_myarray 用这个

dg_datasource=DataUtil.xmltoarray(myxmla);

dg_szjz.dataProvider=dg_datasource.source[0].data;

你可能感兴趣的:(itemRenderer)