2010-04-30 43 views
0

问题:Flex/Flash4客户端(使用FlashBuilder4构建)显示从服务器发送的xml,完全按照原样 - datagrid保留xml的格式。我需要datagrid来解析输入并将数据放在datagrid的正确行和列中。Flex/Flash 4 datagrid显示原始xml

流程:点击树中的一个日期,它以xml的形式向服务器请求批量信息。然后使用CallResponder更新数据网格的dataProvider。

[代码]

<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是相当多恰好显示...

我会感谢您的协助。

+0

花花公子,认真,制定出码标签,这不是回答的.. – Ben 2010-04-30 02:07:14

+0

我是在工作了标签的过程,反正这里是输出。 thnx – Setori 2010-04-30 03:43:07

+0

做得好的工作出来 – Ben 2010-04-30 03:55:21

回答

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完全一样 - 该数据网格保持XML的格式”?它是否在网格单元中转储xml内容?

编辑:你有没有试过这样做?

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

确切地说,datagrid以原始格式显示xml。每列的整个xml内容。 – Setori 2010-04-30 04:03:09

+0

数据/服务选项卡看起来像findShipmentBatches(searchDate:string,searchHubId:string_:string 应该返回类型是xml吗? – Setori 2010-04-30 04:05:21

+0

当我尝试XML时,似乎有很多返回类型选项*我会假设一个简单的String会有那么客户端就足够聪明了解析内容 – Setori 2010-04-30 04:07:44

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 2010-05-07 01:37:32

+0

哦,这个男人是这个原因.....我的网格没有@ 标志!而我从互联网上复制的例子就是利用它。是的,现在我看到我的错误!请作出另一个答案,并给我分配正确的答案:) – Setori 2010-05-07 08:06:40

+0

是的,这是@符号 - >我想我需要休息。非常感谢你的配偶。 – Setori 2010-05-07 09:13:35