2010-04-30 82 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