Flex之DataGrid和Tree控件的数据源XML格式

1、flex的完整代码:

<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 

               xmlns:s="library://ns.adobe.com/flex/spark" 

               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"

               creationComplete="application1_creationCompleteHandler(event)">

    <s:layout>

        <s:BasicLayout/>

    </s:layout>

    <fx:Script>

        <![CDATA[

            import flexunit.utils.ArrayList;

            

            import mx.collections.ArrayCollection;

            import mx.controls.Alert;

            import mx.events.FlexEvent;

            import mx.events.ListEvent;

            import mx.rpc.events.FaultEvent;

            import mx.rpc.events.ResultEvent;

            [Bindable]

            private var treeData:XML;

            

            private var dgData:ArrayCollection = new ArrayCollection();

            private var dgXml:XML = new XML();

            public var xmlList:ArrayList = new ArrayList();



            protected function application1_creationCompleteHandler(event:FlexEvent):void

            {

                httpTree.send();//发送请求            

              }



            protected function httpTree_resultHandler(event:ResultEvent):void

            {

                treeData =  event.result as XML;//获取xml数据对象

                   tr.dataProvider = treeData;     //绑定数据

              }

            

            protected function tree1_itemClickHandler(event:ListEvent):void

            {

                tNumber.text=tr.selectedItem.@value;

                tTel.text=tr.selectedItem.@tel;

            }





            protected function httpTree_faultHandler(event:FaultEvent):void

            {

                Alert.show(event.fault.toString());

            }



            /**

             * 把XMLList转换成ArrayList,适用于从数据库获得的数据,将XMLList每行数据转换成Object。每列数据转换成Object的同名称属性

             * @param data 要转换的XMLList

             * @return 转换之后的ArrayList。

             */



            private function getArrayListFormXmlList(data:XMLList):ArrayList

            {

                var al:ArrayList=new ArrayList();

                for(var i:int=0;i<data.length();i++) //取对象

                   { 

                    var obj:Object=new Object();

                    for(var j:int=0;j<data[i].children().length();j++) //取对象下的结点 id,name,age

                    {

                        var dataColoum:String=data[i].children()[j].localName();

                        obj[dataColoum]=data[i].children()[j].toString();

                    }

                    al.addItem(obj);

                 }

                 return al;

            } 

            

            protected function httpDataGrid_resultHandler(event:ResultEvent):void

            {

                dgXml = event.result as XML;

                xmlList = getArrayListFormXmlList(dgXml.children());                

                for(var i:int=0;i<xmlList.length();i++){

                    dgData.addItem({id:xmlList.getItemAt(i).id,name:xmlList.getItemAt(i).name,

                                    age:xmlList.getItemAt(i).age});

                }

                dg.dataProvider=dgData;

            }





            protected function bt_clickHandler(event:MouseEvent):void

            {

                httpDataGrid.send();

            }



        ]]>

    </fx:Script>

    <fx:Declarations>

        <s:HTTPService id="httpTree" resultFormat="e4x" url="tree.xml" fault="httpTree_faultHandler(event)" 

                       result="httpTree_resultHandler(event)"/>

        <s:HTTPService id="httpDataGrid" resultFormat="e4x" url="users.xml" result="httpDataGrid_resultHandler(event)" />

    </fx:Declarations>

    

    <s:Panel x="120" y="49" width="568" height="248">

        <mx:Tree x="11" y="10" id="tr" labelField="@value"  itemClick="tree1_itemClickHandler(event)" width="234"></mx:Tree>

        <s:Label x="267" y="30" text="部门编号"/>

        <s:Label x="295" y="102" text="电话"/>

        <s:TextInput x="342" y="20" id="tNumber"/>

        <s:TextInput x="342" y="92" id="tTel"/>

    </s:Panel>

    <mx:DataGrid x="143" y="305" id="dg">

        <mx:columns>

            <mx:DataGridColumn headerText="编号" dataField="id"/>

            <mx:DataGridColumn headerText="姓名" dataField="name"/>

            <mx:DataGridColumn headerText="年龄" dataField="age"/>

        </mx:columns>

    </mx:DataGrid>

    <s:Button x="496" y="339" label="导入" id="bt" click="bt_clickHandler(event)"/>

</s:Application>

2、准备数据源:

  users.xml

<?xml version="1.0" encoding="UTF-8"?>

<users>

    <user>

        <id>100001</id>

        <name>张三</name>

        <age>18</age>

    </user>

    <user>

        <id>100002</id>

        <name>李四</name>

        <age>21</age>

    </user>

    <user>

        <id>100003</id>

        <name>赵柯</name>

        <age>22</age>

    </user>

    <user>

        <id>100004</id>

        <name>王利</name>

        <age>19</age>

    </user>

</users>

  tree.xml:

<?xml version="1.0" encoding="UTF-8"?>

<data value="通讯录">

    <data1 value="人力资源部">

        <xm value="1001" tel="1299991999"/>

        <xm value="1002" tel="1299992399"/>

        <xm value="1003" tel="1299991993"/>

    </data1>

    <data2 value="技术部">

        <xm value="1001" tel="1299994999"/>

        <xm value="1002" tel="1299994399"/>

        <xm value="1003" tel="1299994993"/>

    </data2>

    <data3 value="开发部">

        <xm value="1001" tel="3299991999"/>

        <xm value="1002" tel="1399992399"/>

        <xm value="1003" tel="1499991993"/>

    </data3>

</data>

3、测试结果:
  Flex之DataGrid和Tree控件的数据源XML格式

 

你可能感兴趣的:(datagrid)