2010-04-30 2 views
0

Проблема: клиент Flex/Flash4 (построенный с помощью FlashBuilder4) отображает xml, отправленный с сервера точно так же, как и - datagrid сохраняет формат xml. Мне нужен datagrid для синтаксического анализа ввода и размещения данных в правильных строках и столбцах datagrid.Flex/Flash 4 datagrid отображает raw xml

поток: щелкните по дате в дереве и сделайте запрос сервера на пакетную информацию в форме xml. Используя CallResponder, я обновляю dataProvider данных datagrid.

[код]

<fx:Script> 
    <![CDATA[ 
     import mx.controls.Alert; 
     [Bindable]public var selectedTreeNode:XML; 
     public function taskTreeChanged(event:Event):void { 
      selectedTreeNode=Tree(event.target).selectedItem as XML; 
      var searchHubId:String = [email protected]; 
      var searchDate:String = [email protected]; 
      if((searchHubId == "") || (searchDate == "")){ 
       return; 
      } 
     findShipmentBatches(searchDate,searchHubId); 
     } 
     protected function findShipmentBatches(searchDate:String, searchHubId:String):void{ 
      findShipmentBatchesResult.token = actWs.findShipmentBatches(searchDate, searchHubId); 
     } 
     protected function updateBatchDataGridDP():void{ 
     task_list_dg.dataProvider = findShipmentBatchesResult.lastResult; 
    } 
]]> 
</fx:Script> 
<fx:Declarations> 
    <actws:ActWs id="actWs" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/> 
    <s:CallResponder id="findShipmentBatchesResult" result="updateBatchDataGridDP()"/> 
</fx:Declarations> 

<mx:AdvancedDataGrid id="task_list_dg" width="100%" height="95%" paddingLeft="0" paddingTop="0" paddingBottom="0"> 
    <mx:columns> 
     <mx:AdvancedDataGridColumn headerText="Receiving date" dataField="rd"/> 
     <mx:AdvancedDataGridColumn headerText="Msg type" dataField="mt"/> 
     <mx:AdvancedDataGridColumn headerText="SSD" dataField="ssd"/> 
     <mx:AdvancedDataGridColumn headerText="Shipping site" dataField="sss"/> 
     <mx:AdvancedDataGridColumn headerText="File name" dataField="fn"/> 
     <mx:AdvancedDataGridColumn headerText="Batch number" dataField="bn"/> 
    </mx:columns> 
</mx:AdvancedDataGrid> 

//xml example from server 
<batches> 
    <batch> 
     <rd>2010-04-23 16:31:00.0</rd> 
     <mt>SC1REVISION01</mt> 
     <ssd>2010-02-18 00:00:00.0</ssd> 
     <sss>100000009</sss> 
     <fn>Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv</fn> 
     <bn>10041</bn> 
    </batch> 
<batches> 

[/ код]

и XML в значительной степени отображается точно так, как показано в примере выше в DataGrid колонн ...

Я бы оцените вашу помощь.

+0

чувак, серьезно работать код тега, это не отвечает .. – Ben

+0

я был в процессе разработки тегов, во всяком случае здесь является вывод. thnx – Setori

+0

хорошо сделано для его разработки – Ben

ответ

0

Я попробовал упрощенную версию образца с использованием простого XML буквальным, и она отлично работает для меня ..

вот что я получил

<fx:Script> 
    <![CDATA[ 
     import mx.events.FlexEvent; 

     protected function onCreationCompleteHandler(event:FlexEvent):void 
     { 
      task_list_dg.dataProvider = data..batch; 
     } 

     private var data:XML = //xml example from server 
      <batches> 
      <batch> 
       <rd>2010-04-23 16:31:00.0</rd> 
       <mt>SC1REVISION01</mt> 
       <ssd>2010-02-18 00:00:00.0</ssd> 
       <sss>100000009</sss> 
       <fn>Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv</fn> 
       <bn>10041</bn> 
      </batch> 
      </batches>; 



    ]]> 
</fx:Script> 

<mx:AdvancedDataGrid id="task_list_dg" width="100%" height="95%" paddingLeft="0" paddingTop="0" paddingBottom="0"> 
    <mx:columns> 
     <mx:AdvancedDataGridColumn headerText="Receiving date" dataField="rd"/> 
     <mx:AdvancedDataGridColumn headerText="Msg type" dataField="mt"/> 
     <mx:AdvancedDataGridColumn headerText="SSD" dataField="ssd"/> 
     <mx:AdvancedDataGridColumn headerText="Shipping site" dataField="sss"/> 
     <mx:AdvancedDataGridColumn headerText="File name" dataField="fn"/> 
     <mx:AdvancedDataGridColumn headerText="Batch number" dataField="bn"/> 
    </mx:columns> 
</mx:AdvancedDataGrid> 

Вы уверены, что ваши данные прибытия в формате, который вы предлагаете? (проверьте вкладку «Данные и услуги» в FB)

Что вы подразумеваете под «отображает xml, отправленный с сервера точно так же, как есть - datagrid сохраняет формат xml»? удаляет ли xml-содержимое в ячейках сетки?

Редактировать: Вы пробовали это сделать?

protected function updateBatchDataGridDP():void{ 
    task_list_dg.dataProvider = findShipmentBatchesResult.lastResult..batch; 
} 
+0

именно в datagrid отображается xml в необработанном формате. Весь контент xml для каждого столбца. – Setori

+0

вкладка «Данные/Сервисы» выглядит как findShipmentBatches (searchDate: string, searchHubId: string_: string 10 должен ли тип возврата быть xml? – Setori

+0

Кажется, что есть много вариантов возвращаемого типа при попытке XML * Я предполагаю, что простая строка будет иметь достаточно, чтобы клиентская сторона была достаточно умна для анализа содержимого. – Setori

0

должен был прибегнуть к этому чудовищу ----> есть ли лучший способ ???

 protected function updateBatchDataGridDP():void{ 
      var batches:XML = new XML(findShipmentBatchesResult.lastResult); 
      task_list_dg.dataProvider = batches.batch; 
      var task_list_col1:AdvancedDataGridColumn = new AdvancedDataGridColumn(); 
      task_list_col1.dataField = "@rd"; 
      task_list_col1.headerText = "Receiving date"; 
      var task_list_col2:AdvancedDataGridColumn = new AdvancedDataGridColumn(); 
      task_list_col2.dataField = "@mt"; 
      task_list_col2.headerText = "Msg type"; 
      var task_list_col3:AdvancedDataGridColumn = new AdvancedDataGridColumn(); 
      task_list_col3.dataField = "@ssd"; 
      task_list_col3.headerText = "SSD"; 
      var task_list_col4:AdvancedDataGridColumn = new AdvancedDataGridColumn(); 
      task_list_col4.dataField = "@sss"; 
      task_list_col4.headerText = "Shipping site"; 
      task_list_status.text = [email protected]; 
      var task_list_col5:AdvancedDataGridColumn = new AdvancedDataGridColumn(); 
      task_list_col5.dataField = "@fn"; 
      task_list_col5.headerText = "File name"; 
      var task_list_col6:AdvancedDataGridColumn = new AdvancedDataGridColumn(); 
      task_list_col6.dataField = "@bn"; 
      task_list_col6.headerText = "Batch number"; 
      var myColumns:Array = new Array(); 
      myColumns.push(task_list_col1); 
      myColumns.push(task_list_col2); 
      myColumns.push(task_list_col3); 
      myColumns.push(task_list_col4); 
      myColumns.push(task_list_col5); 
      myColumns.push(task_list_col6); 
      task_list_dg.columns = myColumns; 
     } 

с этой XML-структуры:

<batches> 
    <batch rd="2010-04-23 16:31:00.0" mt="SC1REVISION01" ssd="2010-02-18 00:00:00.0" sss="Quanta" fn="Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv" bn="SHA201004230033" /> 
    <batch rd="2010-04-23 16:32:14.0" mt="SC1" ssd="2010-02-11 00:00:00.0" sss="Quanta" fn="DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100211.csv" bn="SHA201004230043" /> 
    <batch rd="2010-04-23 16:35:51.0" mt="PRESHIP" ssd="2010-02-15 00:00:00.0" sss="Quanta" fn="DF-Ocean-PRESHIPSUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100215.csv" bn="SHA201004230045" /> 
</batches> 
+0

Вам не нужно делать все, это неправильно. Вы можете указать и @attribute в тегах столбца: Ben

+0

oh man Это причина ..... моя сетка не имеет @ знак! и пример, который я скопировал из Интернета, использует его. да, я сейчас вижу свою ошибку! сделайте еще один ответ, и я назначу правильный ответ вам :) – Setori

+0

да, это был знак @ -> Мне кажется, мне нужен отдых. Большое спасибо. – Setori

Смежные вопросы