2013-02-28 38 views
0

我有一个XML文件如何从xternal xml设置高级数据网格列?

<Column id="first name" headerLabel="first name" dataField="first name" /> 
<Column id="regionName" headerLabel="Region" dataField="region_name" />" 
<Column id="lastname" headerLabel="last_name" dataField="last_name"/> 

我想这列名被分配到我的数据网格,因为我从后端拾取数据并保存在一个变量succesfull现在我只是想显示它在我的高级数据网格中,任何人都可以指导我如何用书面示例来实现这一点?

<mx:AdvancedDataGrid 
    id="list" 
    dataProvider="{data}"      
    columns = ?/> 

我正在使用此代码supoose我的xml文件名在assets/config/rumpy.xml中,我想从中使用头字段检索列名。

回答

0

我建议你到这个XML转换成的XMLList和列添加到数据网格,同时通过它的元素进行迭代。

默认情况下,你应该确定一个空的一组数据网格列。在我的例子中,如果你不这样做,你会得到两倍多的列,因为网格可以根据数据提供者的结构自动定义列。

<?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="init(event)"> 

<fx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 
     import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn; 
     import mx.events.FlexEvent; 
     private var columnList:XMLList; 

     [Bindable]private var data:ArrayCollection = new ArrayCollection([ 
      {first_name:"John",  last_name:"Busch", region_name:"CA"}, 
      {first_name:"Mike",  last_name:"Harris", region_name:"DC"}, 
      {first_name:"Linda", last_name:"Brucks", region_name:"CA"}]); 

     protected function init(event:FlexEvent):void 
     { 
      loadXML(); 
     } 

     private function loadXML():void 
     { 
      var loader:URLLoader = new URLLoader(); 
      loader.addEventListener(Event.COMPLETE, onXMLComplete); 
      loader.load(new URLRequest("assets/config/rumpy.xml")); 
     } 

     private function onXMLComplete(evt:Event):void 
     { 
      var xmlData:XML = XML((evt.currentTarget as URLLoader).data); 
      columnList = xmlData.Column; 

      var cols:Array = list.columns; 

      for each (var item:XML in columnList) 
      { 
       var adgc:AdvancedDataGridColumn = new AdvancedDataGridColumn([email protected]); 
       adgc.headerText = [email protected]; 

       cols.push(adgc);  
      } 

      list.columns = cols; 
     } 
    ]]> 
</fx:Script> 

<mx:AdvancedDataGrid id="list" x="10" y="10" dataProvider="{data}" width="360" height="120"> 
    <mx:columns/> 
</mx:AdvancedDataGrid> 

</s:Application> 

//rumpy.xml

<Columns> 
     <Column id="first_name" headerText="First Name"  dataField="first_name"/> 
     <Column id="regionName" headerText="Region"   dataField="region_name"/> 
     <Column id="lastname" headerText="Last Name"  dataField="last_name"/> 
</Columns> 
+0

感谢您的回答,但该XML文件是外部I DO NT想在我的代码申报.....上面我提到我的文件在在assets/config/rumpy.xml中,我想使用头字段来检索列名。 – ricky 2013-03-06 04:59:05

+0

在这种情况下,只需在配置列之前加载XML。我编辑了我的代码。 – Anton 2013-03-06 07:03:55

+0

可以解释项目。@? – ricky 2013-03-06 08:47:23