2012-12-17 5 views
1

질문 : 각 구성 요소가 들어있는 3 개의 색인이있는 아코디언이 있습니다. 그 구성 요소는 항상 동일한 것입니다 (일반 datagrid). 이 DataGrid는 PHP와 JSON을 통해 데이터를받습니다.Flex Datagrid가 업데이트되지 않습니다

내 Accordion의 SelectedIndex가 변경되면 내 DataGrid의 데이터가 변경되어야합니다. 내가 아코디언 - 인덱스를 변경할 때마다 $typeId 지금 selectedIndex의

if(isset($_POST['accIndex'])){ 
    $typeId = mysql_real_escape_string($_POST['accIndex']); 
} else { 
    $typeId = 1; 
} 

에게 있습니다

$query = "SELECT * FROM gerecht where typeID = " . $typeId; 

는, 데이터가 동일하게 유지 :

는 PHP는 쿼리입니다. 여기 내 플렉스 코드 : 뭔가를 추측하고있어

<?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" xmlns:components="components.*" initialize="getData.send();"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
     <mx:HTTPService id="getData" url="http://localhost/P006_Project/Query.php" 
         useProxy="false" method="POST" resultFormat="text" result="getPHPData(event)" /> 
     <mx:HTTPService id="sendData" url="http://localhost/P006_Project/Query.php" 
         useProxy="false" method="POST" result="sendData_resultHandler(event)"> 
      <mx:request xmlns=""> 
       <accIndex> 
        {accItems.selectedIndex + 1} 
       </accIndex> 
      </mx:request> 
     </mx:HTTPService> 

     <s:ArrayCollection id="acItems" source="{dataArray.source}" /> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.controls.Alert; 
      import mx.controls.Text; 
      import mx.events.FlexEvent; 
      import mx.events.IndexChangedEvent; 
      import mx.rpc.events.ResultEvent; 

      [Bindable]private var dataArray:ArrayCollection = new ArrayCollection(); 

      private function initDataGrid():void 
      { 
       getData.send(); 
      } 

      private function getPHPData(event:ResultEvent):void 
      { 
       var rawArray:Array; 
       var rawData:String = String(event.result); 
       rawArray = JSON.parse(rawData) as Array; 
       dataArray = new ArrayCollection(rawArray); 
      } 

      protected function accItems_changeHandler(event:IndexChangedEvent):void 
      { 
       // TODO Auto-generated method stub 
       sendData.send(); 
       trace(acItems); 
      } 

      protected function sendData_resultHandler(event:ResultEvent):void 
      { 
       // TODO Auto-generated method stub 
       Alert.show(event.result.toString()); 
      } 

     ]]> 
    </fx:Script> 

    <mx:Accordion id="accItems" creationPolicy="auto" change="accItems_changeHandler(event)"> 
     <s:NavigatorContent label="Frisdranken"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Bieren (vat)"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
    </mx:Accordion> 
</s:Application> 

이 잘못된 것 중 하나에 : - selectedIndex의 수신 PHP는? - 또는 flex가 새 데이터로 DataGrid를 업데이트 할 수 없습니까?

+0

'getPHPData'fn이 예상되는 값을보고 있습니까? IE 'dataArray'에는 필요한 내용이 들어 있습니까? – ethrbunny

+0

내 'dataArray'의 내용이 항상 같은 상태로 유지되는 것 같아서 selectedIndex가 PHP 파일에 도달하지 못했다고 생각하십니까? – ZackWhite

+0

소리가 좋아. 따라서 다음 단계는 값이 전송되는지 여부를 파악하는 것입니다. 나는 params가 지나가는 것을 보지 못한다. 이것이 중요한지 확실하지 않습니다. – ethrbunny

답변

1

K 마지막으로 해결책을 찾았습니다. 나는 2 개의 httpServices를 사용하고 있었고, 처음부터 데이터를 수신했지만,이 매개 변수를 포함하지 않았다. 그래서 저는 그것들을 하나로 합쳤습니다. 다음 코드에서 결과 : (다른 모든 구성 요소도 추가 했으므로주의하지 마십시오.)

<?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" xmlns:components="components.*"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
     <mx:HTTPService id="sendData" url="http://localhost/P006_Project/Query.php" 
         useProxy="false" method="POST" result="sendData_resultHandler(event)"> 
      <mx:request xmlns=""> 
       <accIndex> 
        {accItems.selectedIndex + 1} 
       </accIndex> 
      </mx:request> 
     </mx:HTTPService> 

     <s:ArrayCollection id="acItems" source="{dataArray.source}" /> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.controls.Alert; 
      import mx.controls.Text; 
      import mx.events.FlexEvent; 
      import mx.events.IndexChangedEvent; 
      import mx.rpc.events.ResultEvent; 

      [Bindable]private var dataArray:ArrayCollection = new ArrayCollection(); 

      private function initDataGrid():void 
      { 
       sendData.send(); 
      } 

      protected function accItems_changeHandler(event:IndexChangedEvent):void 
      { 
       sendData.send(); 
      } 

      protected function sendData_resultHandler(event:ResultEvent):void 
      { 
       var rawArray:Array; 
       var rawData:String = String(event.result); 
       rawArray = JSON.parse(rawData) as Array; 
       dataArray = new ArrayCollection(rawArray); 
      } 

     ]]> 
    </fx:Script> 

    <mx:Accordion id="accItems" creationPolicy="auto" change="accItems_changeHandler(event)"> 
     <s:NavigatorContent label="Frisdranken"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Bieren (vat)"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Bieren"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Warme dranken"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Wijnen"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Sterke dranken"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Tapas"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Platos"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Especialidades"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
     <s:NavigatorContent label="Bocadillos"> 
      <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/> 
     </s:NavigatorContent> 
    </mx:Accordion> 
</s:Application> 
관련 문제