Извлечение таблиц из базы данных SQL - PullRequest
0 голосов
/ 18 апреля 2010

Как видно из заголовка, я хочу получить таблицы данных из базы данных SQL, используя Flex 4 и .Net WebService.

Я новичок в Flex и DotNet. Пожалуйста, скажите мне правильный способ сделать это.

Это то, что я сделал до сих пор:


Получение массива строк: (это работает)

.Net:

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

Flex 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>

Получение таблицы данных: (это не работает)

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;
}

Flex 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>

Ответы [ 2 ]

0 голосов
/ 30 апреля 2010

Я нашел ответ на это после некоторого поиска в Google, поэтому я публикую его здесь, чтобы распространять любовь.

Сначала создайте переменную для хранения результата

[Bindable]
private var DotNetData:ArrayCollection;

Тогда в вашем обработчике

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

В этом примере "resultsDg" - это просто сетка данных. «ListData» относится к именуемому имени, взятому из элемента «msdata: MainDataTable» в ответном XML.

Вдохновение отсюда: http://ranjitfx.wordpress.com/net-flex/

0 голосов
/ 29 апреля 2010

Я также новичок во Flex и у меня та же проблема, что и у вас. Единственное, что я сделал для вас по-другому, - это заполните набор данных, а не набор данных, с помощью адаптера данных в моем веб-сервисе. Используя сетевой монитор FlashBuilder 4, я вижу, что мои данные действительно поступили в приложение Flex, поэтому веб-служба работает нормально, но моя проблема в том, что я не могу заполнить раскрывающийся список. В качестве ссылки я также отправил строку в свое приложение Flex из веб-службы, которая, как и ваша проверка, также работает. Тем не менее, я вижу разницу между двумя результатами в сетевом мониторе, мне нужно углубиться в детали, прежде чем я увижу данные из набора данных. Проблема в том, что я слишком новичок, чтобы разобраться, если это означает, что я дал более длинное имя своим полям раскрывающегося списка, чтобы собрать данные, но это будет моей задачей завтра. Возможно, вам стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...