2011-06-17 20 views
0

我對Flex很陌生,我使用的是Flash Builder 4.5。 我很沮喪..試圖從昨天早上開始解決這個問題,似乎沒有足夠的資源來學習更多關於Flex的知識!如何根據從ColumnCharts(xField =「date」)上的MySQL獲取的日期進行排序?

所以這裏是問題:我有一個「日期」數據類型的數據庫字段,我只是不能通過它的xField!我嘗試了很多東西,但沒有任何作品。當我嘗試通過id命令它的工作,但它不支持日期或某事。

這裏是日期的PHP格式:

 $row->date = new DateTime($row->date); 
     $row->date = $row->date->format("d/m/Y"); 

現在的事情是,當我試圖讓xField =「日期」它沒有顯示的列和xField仍然[0 20 40 60等]。

我接受新的建議,我不關心我只想在xField上顯示日期的方式。

而且請,就像我說我有點新flex,所以請讓你的答案可以理解。

希望有人能幫助我,謝謝你們!

編輯:這裏是整個FLEX代碼:

<?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" 
       xmlns:fanpagesservice="services.fanpagesservice.*" 
       width="914" height="636" minWidth="955" minHeight="600" backgroundColor="#000000" 
       creationComplete="application1_creationCompleteHandler(event)"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.charts.events.ChartItemEvent; 
      import mx.collections.ArrayCollection; 
      import mx.events.FlexEvent; 
      import mx.rpc.events.ResultEvent; 
      [Bindable] 
      private var Totals:ArrayCollection = new ArrayCollection; 
      [Bindable] 
      private var Likes:ArrayCollection = new ArrayCollection; 
      [Bindable] 
      public var minDate:Date = new Date(2011, 06, 1); 
      [Bindable] 
      public var maxDate:Date = new Date(2011, 06, 30); 

      protected function ResponcerTotals_resultHandler(event:ResultEvent):void 
      { 
       // TODO Auto-generated method stub 
       Totals = event.result as ArrayCollection; 

      } 

      protected function application1_creationCompleteHandler(event:FlexEvent):void 
      { 
       // TODO Auto-generated method stub 
       ResponderTotals.token = fanpageService.getAllFanpagesTotals(); 

      } 

      protected function ResponderLikes_resultHandler(event:ResultEvent):void 
      { 
       // TODO Auto-generated method stub 
       Likes = event.result as ArrayCollection; 
      } 

      protected function totalsPie_itemClickHandler(event:ChartItemEvent):void 
      { 
       // TODO Auto-generated method stub 
       ResponderLikes.token = fanpageService.getAllFanpagesStats(event.hitData.item.page_name); 
      } 

     ]]> 
    </fx:Script> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
     <fanpagesservice:FanpagesService id="fanpageService" /> 
     <s:CallResponder id="ResponderTotals" result="ResponcerTotals_resultHandler(event)" /> 

     <s:CallResponder id="ResponderLikes" result="ResponderLikes_resultHandler(event)" /> 
     <mx:SeriesInterpolate id="interpolate" duration="500"/> 
    </fx:Declarations> 
    <s:Panel x="18" y="9" width="878" height="613" backgroundColor="#262626" chromeColor="#000" 
      color="#FFFFFF" contentBackgroundColor="#262626" fontFamily="Arial" fontSize="14" 
      skinClass="spark.skins.spark.PanelSkin" textAlign="center"> 
     <s:layout> 
      <s:BasicLayout/> 
     </s:layout> 
     <mx:PieChart id="totalsPie" x="10" y="10" itemClick="totalsPie_itemClickHandler(event)" dataProvider="{Totals}" showDataTips="true"> 
      <mx:series> 
       <mx:PieSeries displayName="Series 1" field="likes" nameField="page_name" showDataEffect="{interpolate}"/> 
      </mx:series> 
     </mx:PieChart> 
     <mx:Legend x="11" y="414" width="400" dataProvider="{totalsPie}"/> 

     <mx:ColumnChart id="columnchart1" x="432" y="10" width="434" dataProvider="{Likes}" 
         showDataTips="true"> 
      <mx:series> 
       <mx:ColumnSeries displayName="serie" yField="likes" xField="date" showDataEffect="{interpolate}"/> 
      </mx:series> 
     </mx:ColumnChart> 
    </s:Panel> 
</s:Application> 

基本上有一個餡餅,當你點擊它的一部分,它需要通過日期列圖表中顯示的「喜歡」 (多少喜歡它每天)。點擊部分工作只是xField =「日期」不起作用。

+0

糟糕的解釋,你沒有顯示任何Flex代碼。你如何請求數據? Flex如何接收它?你如何在Flex端進行格式化? xField是什麼意思?你如何排序?這是在數組中還是在DataGrid中? –

+0

用完整的flex代碼編輯,謝謝。 – Ricardo

回答

1

你可以做的最簡單的事情?將它排序在PHP端併發送給Flex,因爲考慮到您使用嚮導來創建所有Flex代碼,您明顯知道PHP比Flex更多。

如果你不想這樣做,你需要分析你的結果,因爲您的服務器只是發送一個字符串的日期(不是實際的Date對象):

protected function ResponderLikes_resultHandler(event:ResultEvent):void 
{ 
    var array:Array = ArrayCollection(event.result).source; 
    // Convert string to date object 
    for each(var item:Object in array) 
    { 
     item.timestamp = DateFormatter.parseDateString(item.date).getTime(); 
    } 
    // Sort array 
    array.sortOn('timestamp', Array.NUMERIC); 
    // Insert into collection presorted 
    Likes = new ArrayCollection(array); 
} 

應這樣做,但你需要總數相同,或者只是創建一個函數來分析數據。

+0

未定義的屬性DateFormatter,未定義的屬性getTime .. – Ricardo

+0

您需要導入DateFormatter,並且忘記將get()放在getTime的末尾。再一次,爲什麼你不只是在PHP端進行排序呢? –

+0

是的,我固定的,但我的意思是......霍利莫莉。我迷失在代碼中,我做了你所說的,我正在考慮如何對總數進行相同操作:( – Ricardo

相關問題