Je vais épargner d'essayer de comprendre le moyen "correct" d'intégrer une combinaison de ComboBox à l'intérieur d'un flex (3.4) DataGrid. Par les droits (par exemple, selon cette page http://blog.flexmonkeokatches.com/2008/02/18/simple-datagrid-combobox-as-item-editor-example/ ) Il devrait être facile, mais je ne peux pas pour la vie de moi Faites ce travail.
La différence que j'ai à l'exemple lié ci-dessus est que ma valeur d'affichage (ce que l'utilisateur voit) est différent de la valeur ID que je souhaite sélectionner activée et stockez dans mon fournisseur de données. P> < p> alors ce que j'ai est: p> où Quoi qu'il en soit, le code MXML ci-dessus ne fonctionne pas de deux manières: P > Donc, quelqu'un a-t-il une situation similaire à travailler? p> p> transactiontypesdata code> a des champs "Data" et "étiquettes" (selon ce que le
Combobox code> - Pourquoi sur Terre il ne fournit pas à la fois un labelfield et IDFIELD, je ne saurai jamais). P>
3 Réponses :
Le moyen le plus simple d'ajouter de l'élémentRenderers à DataGrids est de créer un composant MXML personnalisé. Dans votre cas, créez une toile, HBOX ou une Vbox comme composant personnalisé et ajoutez le ComboBox en tant qu'enfait.SeLe DataProvider sur le Datagramrid lui-même et attribuez l'itemRenderer à la colonne, puis remplacez la fonction de données définie de l'élémentRenderer pour accéder à Toutes les données du fournisseur de données donné pour cette instance, comme indiqué ci-dessous: Cette méthode sera appelée à chaque instance de l'itemRenderer p> p>
J'espérais éviter une telle approche sinueuse et je suppose que j'aurai besoin de remplacer aussi.
Bien que la réponse de Jeff est une réponse partielle pour une approche pour cela (voir http: // flex. gunua.com/?p=119 pour un exemple complet de ceci étant utilisé à bon effet), ce n'est pas aussi général que je le voulais.
Heureusement, j'ai enfin trouvé une bonne aide sur Experts Exchange (les réponses de Hobbit72) décrit comment créer un composant personnalisé qui fonctionne dans une grille en tant que itemRenderer.
J'ai étendu ce code pour également prendre en charge l'utilisation de la liste déroulante en tant qu'imentiditor. Le composant complet est le suivant: p> Utilisation de ce composant est simple. En tant que itemRenderer: P> <mx:DataGridColumn labelFunction="lookupChildName" headerText="Child" dataField="PersonID" editable="true" editorDataField="selectedItemKey">
<mx:itemEditor>
<mx:Component>
<fx:GridComboBox dataProvider="{parentDocument.childrenData}" labelField="Name" lookupField="PersonID" change="dispatchEvent(new mx.events.DataGridEvent(mx.events.DataGridEvent.ITEM_FOCUS_OUT, true, true))"/>
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
J'aimerais vraiment voir le code complet sans avoir à obtenir un essai gratuit à EE (l'anti-Ainsi!), S'il vous plaît!
J'aimerais voir une version d'étincelle de cela.
Dans mon cas, j'ai utilisé une étincelle Datagrid dans laquelle l'une des colonnes a un itemRenderer qui utilise une liste déroulante. Mon problème était que lorsque ma liste d'articles change, les listes déroulantes ne sont pas mises à jour avec le nouveau DataProvider. Pour résoudre ceci, je devais transmettre le DataProvider pour la liste déroulanteListbox dans le cadre des données (de l'itemRenderer), puis en remplacant la sécheuse des données pour simplement affecter le DataProvider de Dropdowlistbox. Probablement un peu de frais généraux, mais si quelqu'un a une meilleure solution, laissez-moi savoir:
p> p>