2013-02-28 3 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"/> 

Я хочу это имя столбца, чтобы быть назначен моей сетке данных, как я успешным в собирании данных с заднего конца и сохранить в переменной Теперь я просто хочу, чтобы отобразить его в моей расширенной сетке данных любой орган может мне помочь, как это сделать с помощью письменного примера?

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

Я использую этот код supoose мое имя файла XML в активах/конфигурации/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-файл внешний я действительно нт хочу объявить в моем коде ..... выше я упомянуть, что мой файл находится в в assets/config/rumpy.xml, из которого я хочу получить имя столбца, используя поле заголовка. – ricky

+0

В этом случае нужно просто загрузить XML перед настройкой столбцов. Я редактировал свой код. – Anton

+0

может у объяснить пункт. @? – ricky