2009-02-22 3 views
0

У меня есть DataGrid, определенный в файле MXML (Flex 3):Как настроить таргетинг на datagrid Flex 3 в MXML из ActionScript?

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

Как настроить таргетинг на datagrid, сгенерированный в mxml из внешнего класса? Я пробовал:

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

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

Я также попытался:

[Bindable] 
public var resultsGrid:DataGrid; 

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

ответ

0

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

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

фактически назначение. Это так же, как присвоить значение переменной, как в

var a : uint = 1; 

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

Вот простой и простой пример того, как работает связывание. Обратите внимание, что есть одно свойство, которое может быть привязано ... когда вы нажимаете кнопку, оно устанавливает это свойство в значение того, что находится в 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

Update: Формулировка вашего вопроса меня смутила :(

Если вам необходимо заполнить DataGrid с от вас Д.Б., вы действительно должны смотреть на связывание свойства DataProvider

1

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

Я не очень понимаю ваш ответ Могу ли я не обязательным свойством DataProvider, выполнив:.

Кв.. plication.application.resultsGrid.dataProvider = result.data; ?

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

+0

Это не обязательство, это назначение. Информация о привязке: http://www.adobe.com/devnet/flex/quickstart/using_data_binding/ –

 Смежные вопросы

  • Нет связанных вопросов^_^