flex DataGrid自定义 itemrenderer

来源:互联网 发布:淘宝订单生成器 编辑:程序博客网 时间:2024/05/21 14:08

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;

0 0
原创粉丝点击