Как я могу нацелить сетку данных Flex 3 в MXML из Actionscript? - PullRequest
0 голосов
/ 22 февраля 2009

У меня есть сетка данных, определенная в файле mxml (flex 3):

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

Как я могу нацелить сетку данных, сгенерированную в mxml из внешнего класса? Я пробовал:

Application.application.resultsGrid.dataProvider = results.data;

И получите «Ошибка: доступ к неопределенному свойству Application.» из компилятора amxmlc.

Я также пробовал:

[Bindable]
public var resultsGrid:DataGrid;

В свойствах класса.

Ответы [ 3 ]

1 голос
/ 22 февраля 2009

Похоже, мне нужно было включить import mx.core. *; и теперь это работает.

Я не очень понимаю ваш ответ. Не связываю ли я свойство dataprovider, выполнив:

Application.application.resultsGrid.dataProvider = result.data;

Я из PHP и знаком с ООП в этой среде, поэтому идиомы в Flex довольно странные для меня.

0 голосов
/ 22 февраля 2009

как говорит brd664, что вы на самом деле делаете в

Application.application.resultsGrid.dataProvider = result.data; 

на самом деле задание. Это как присвоение значения переменной, как в

var a : uint = 1;

Связывание дает вам немного больше структуры и позволяет заполнять несколько компонентов на основе одного обновления свойства. Есть много других преимуществ от связывания и, вероятно, слишком много, чтобы охватить в этом посте.

Вот быстрый и простой пример того, как работает привязка. Обратите внимание, что есть одно свойство, которое можно привязать ... когда вы нажимаете кнопку, оно устанавливает для этого свойства значение того, что находится в textInput. Затем это обновление вызывает срабатывание привязок и обновляет все, что связано с этим свойством. Это одна из самых больших функций flex (она также широко используется в silverlight и wpf и, вероятно, является набором других технологий, о которых я не знаю). В любом случае ... поиграйте с ним и посмотрите, сможете ли вы обновить компонент с помощью привязки.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">

    <mx:Script>
        <![CDATA[

            private var _myData : String

            [Bindable]
            public function get myData() : String
            {
                return _myData;
            }
            public function set myData(value : String) : void
            {
                _myData = value;
            }

            private function clickHandler(event : MouseEvent) : void
            {
                myData = myTextInput.text;
            }
        ]]>
    </mx:Script>
    <mx:VBox>
        <mx:HBox>
            <mx:Label text="{myData}" />
            <mx:Label text="{myData}" />
            <mx:Label text="{myData}" />
        </mx:HBox>
        <mx:TextInput id="myTextInput" text="TYPE HERE" />
        <mx:Button label="CLICK TO BIND" click="clickHandler(event)" />
    </mx:VBox>

</mx:Application>
0 голосов
/ 22 февраля 2009

Обновление: формулировка вашего вопроса смутила меня: (

Если вам нужно заполнить сетку данных из вашей базы данных, вам действительно следует обратить внимание на привязку свойства dataProvider.

...