2011-09-22 1 views
1

J'essaie de créer une grille de données, qui ajoutera dynamiquement des colonnes en fonction de certaines conditions. Maintenant, je peux ajouter les colonnes, mais je veux que la colonne nouvellement ajoutée ait un bouton utilisant itemRenderer.Ajouter dynamiquement des colonnes à datagrid dans Flex

Je suis incapable de réaliser ceci cependant. Obtenir cette erreur sur la ligne 1

Resource Description Emplacement du chemin type 1067: Contrainte implicite d'une valeur de Type mx.controls: Bouton à un type sans rapport avec mx.core: IFactory. Demo.mxml/Demo/src ligne 14 Flex Problème

Quelqu'un peut-il aider?

Voici un extrait de code:

private function addDataGridColumn(dataField:String):void { 
      var dgc:DataGridColumn = new DataGridColumn(); 
      dgc.itemRenderer = button1; // Line 1 
      var cols:Array = dataGrid.columns; 
      cols.push(dgc); 
      dataGrid.columns = cols; 
     } 
+0

Pouvez-vous afficher la déclaration et l'initialisation de button1? –

Répondre

4

Les propriétés itemRenderer et itemEditor sont de type IFactory. Lorsque vous définissez ces propriétés dans MXML, le compilateur MXML transfère automatiquement la valeur de la propriété au type ClassFactory, classe qui implémente l'interface IFactory.

Lorsque vous définissez ces propriétés dans ActionScript, vous devez convertir explicitement la valeur de la propriété à ClassFactory

Vous cherchez peut-être pour cela, ajoute des boutons à toutes les lignes de la colonne nouvellement ajouté.

private function addDataGridColumn(dataField:String):void { 
       var dgc:DataGridColumn = new DataGridColumn(); 
       dgc.itemRenderer = new ClassFactory(Button); 
       var cols:Array = dataGrid.columns; 
       cols.push(dgc); 
       dataGrid.columns = cols; 
      } 
+0

J'allais poster la même réponse, alors oui, c'est comme ça! – Exort

Questions connexes