2010-04-18 10 views
0

제목에서 알 수 있듯이 Flex 4와 .NET WebService를 사용하여 SQL 데이터베이스에서 데이터 테이블을 검색하려고합니다.SQL 데이터베이스에서 테이블 가져 오기

저는 Flex와 DotNet을 처음 사용합니다. 제게 올바른 방법을 말해주세요. (이 작품)

닷넷 :

[WebMethod] 
public String[] getTestArray() 
{ 
    String[] arStr = { "AAA", "BBB", "CCC", "DDD" }; 
    return arStr; 
} 

플렉스 4


문자열의 배열을 가져 :

내가 지금까지 한 일이다 :

<?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"> 

    <fx:Script> 
     <![CDATA[ 

      import mx.collections.ArrayCollection; 
      import mx.controls.Alert; 
      import mx.rpc.events.ResultEvent; 

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

      protected function btn_clickHandler(event:MouseEvent):void 
      { 
       ws.getTestArray(); 
      }   

      protected function ws_resultHandler(event:ResultEvent):void 
      { 
       ac = event.result as ArrayCollection; 
       Alert.show(ac.toString());    
      } 

     ]]> 
    </fx:Script> 

    <fx:Declarations> 
     <s:WebService id="ws" wsdl="http://localhost:50582/Service1.asmx?WSDL" result="ws_resultHandler(event)"/> 
    </fx:Declarations> 

    <s:Button x="10" y="30" label="Button" id="btn" click="btn_clickHandler(event)"/> 

</s:Application> 

가져 DataTable을 : (이 작동하지 않습니다)

DOTNET :

[WebMethod] 
public DataTable getUsers() 
{   
    DataTable dt = new DataTable("Users"); 
    SqlConnection conn = new SqlConnection("server = 192.168.1.50; database = MyDatabase; user id = sa; password = 1234; integrated security = false");   
    SqlDataAdapter da = new SqlDataAdapter("select vFName, vLName, vEmail from Users", conn); 
    da.Fill(dt); 
    return dt; 
} 

플렉스 4 :

<?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"> 

    <fx:Script> 
     <![CDATA[ 

      import mx.collections.ArrayCollection; 
      import mx.controls.Alert; 
      import mx.rpc.events.ResultEvent; 

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

      protected function btn_clickHandler(event:MouseEvent):void 
      { 
       ws.getUsers(); 
      }   

      protected function ws_resultHandler(event:ResultEvent):void 
      { 
       ac = event.result as ArrayCollection; 
       Alert.show(ac.toString()); 
      } 

     ]]> 
    </fx:Script> 

    <fx:Declarations> 
     <s:WebService id="ws" wsdl="http://localhost:50582/Service1.asmx?WSDL" result="ws_resultHandler(event)"/> 
    </fx:Declarations> 

    <s:Button x="10" y="30" label="Button" id="btn" click="btn_clickHandler(event)"/> 

</s:Application> 

답변

0

나는 또한 플렉스 새로운 오전과를 데 너 자신과 같은 문제. 내가 다르게 수행 한 유일한 작업은 데이터 셋을 채우는 것이며 웹 서비스의 데이터 어댑터로 데이터 테이블을 채우는 것입니다. FlashBuilder 4 네트워크 모니터 사용하기 웹 서비스가 정상적으로 작동 할 수 있도록 내 데이터가 실제로 Flex 애플리케이션에 도착했음을 알 수 있지만 내 문제는 채우기 위해 내 드롭 다운 목록을 가져올 수 없다는 것입니다. 참고로, 필자는 'check'처럼 Web Services에서 Flex 어플리케이션에 문자열을 보냈다. 그러나 데이터 세트의 데이터를보기 전에 네트워크 모니터의 2 가지 결과 사이에 차이가 있음을 알 수 있습니다. 데이터를 가져 오기 위해 드롭 다운 목록 필드에 더 긴 이름을 지정했음을 의미하는 경우 문제가 너무 새로 부러졌습니다.하지만 내일이 내 작업이됩니다. 아마도 이것은 당신이 시도해 볼만한 아이디어입니다.

0

인터넷 검색 후이 답변을 찾았습니다. 그래서 여기에 사랑을 전하기 위해 게시하고 있습니다.

먼저 핸들러이 예에서

protected function ws_resultHandler(event:ResultEvent):void 
{ 
    DotNetData = event.result.Tables.ListData.Rows; 
    resultsDg.dataProvider = DotNetData; 
} 

에 결과를 다음

[Bindable] 
private var DotNetData:ArrayCollection; 

을 보유 할 변수를 만들어 "resultsDg는"단지 데이터 그리드입니다. "ListData"는 응답 XML의 "msdata : MainDataTable"요소에서 가져온 데이터 테이블 이름을 나타냅니다.

여기에서 아이디어 : http://ranjitfx.wordpress.com/net-flex/

관련 문제