Comment puis-je cibler une grille de données Flex 3 en MXML à partir d'Actionscript?


0

J'ai un DataGrid défini dans un fichier MXML (Flex 3):

J'utilise une classe externe pour se connecter à une base de données SQLite et générer des résultats (ce qui fonctionne et je peux tracer les résultats).

Comment puis-je cibler la grille de données générée dans le mxml à partir de la classe externe? J'ai essayé:

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

Et obtenir 'Erreur: Accès de la propriété non définie Application.' à partir du compilateur amxmlc.

J'ai aussi essayé:

[Bindable] 
public var resultsGrid:DataGrid; 

Dans les propriétés de classe.

0

comme brd664 dit, ce que vous faites réellement dans

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

est en fait une mission. Il est tout comme l'attribution d'une valeur à la variable comme dans

var a : uint = 1; 

reliure vous donne un peu plus de structure et vous permet de remplir plusieurs composants basés sur une seule mise à jour de la propriété. Il y a une tonne d'autres avantages de la liaison et probablement trop de choses à couvrir dans ce post.

Voici un exemple rapide et simple du fonctionnement de la liaison. Notez qu'il existe une propriété qui peut être liée ... lorsque vous cliquez sur le bouton, elle définit cette propriété sur la valeur de ce qui est dans textInput. Cette mise à jour provoque ensuite le déclenchement des liaisons et met à jour tout ce qui a été lié à cette propriété. C'est l'une des plus grandes fonctionnalités de flex (elle est aussi largement utilisée dans silverlight et wpf et probablement un tas d'autres technologies que je ne connais pas). En tout cas ... jouez avec et voyez si vous pouvez mettre à jour votre composant à partir d'une liaison.

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

Mise à jour: Le phrasé de votre question me confondre :(

Si vous devez remplir la grille de données avec de vous Db, vous devriez vraiment être à la recherche à lier la propriété dataProvider


1

On dirait. Je avais besoin d'inclure mx.core d'importation *, et il travaille maintenant

Je ne comprends pas vraiment votre réponse que je ne lie pas la propriété dataprovider en faisant:.

Ap.. plication.application.resultsGrid.dataProvider = result.data; ?

Je viens d'un environnement PHP et je suis familier avec la POO dans cet environnement, donc les idiomes dans Flex sont assez étranges pour moi.

  0

Ce n'est pas obligatoire, c'est une tâche. Info sur la reliure: http://www.adobe.com/devnet/flex/quickstart/using_data_binding/ 22 févr.. 092009-02-22 07:33:55