2011-07-19 4 views
2

Voici une image de mon problème: J'utilise une combo-box comme Datagrid ItemEditor (pas seulement Renderer, mon Renderer est une étiquette, un double clic sur une cellule rend la combo-box visible, comme c'est le cas avec tous les éditeurs d'éléments)Flex: ItemEditor perd le focus!

Maintenant, la sélection de l'une des entrées dans la combo-box ne pose aucun problème. Mais mon problème est que lorsque je sélectionne le « fruit », qui pops son tour ouvrir une autre couche appelée « Select Fruit » dialogue

Questions:

Comment puis-je garder éditeur d'élément, alors que l'accent est mis sur la couche ; dès maintenant, dès que je clique sur le fruit, mon gestionnaire ouvre la boîte de dialogue "Select Fruit" et l'accent est mis sur le calque. Une fois que le focus est sorti de l'éditeur, ItemEditor disparaît et l'étiquette ItemRenderer revient.

Je veux garder le ItemEditor en vie! Où puis-je brancher des interms d'événements comme begin/end ItemEdit etc?

Flex: Item editor, losing focus!

+1

Pouvons-nous voir du code? Je créerais probablement un rendu d'élément avec un éditeur personnalisé plutôt que d'utiliser l'éditeur d'élément intégré, alors vous avez un contrôle total sur ce qui est montré et quand (avec certains états intelligents que vous mettrez dedans);) – Nate

Répondre

1

Vous pouvez garder votre itemEditor en vie en écoutant DataGridEvent.ITEM_EDIT_END. Ensuite, vous avez beaucoup plus de contrôle pour faire ce que vous voulez. Certains FYI de mon blog:

DataGridEvent.ITEM_EDIT_END - Distribué lorsque le focus est retiré de la cellule - Liste basée sur l'écouteur d'événement par défaut du contrôle sera

1) utiliser la propriété .editorDataFrield à deterine la propriété du éditeur d'élément pour stocker les données éditées; Dans un éditeur d'élément de contrôle TextInput par défaut, la propriété "text" contiendrait les nouvelles données.

2) Invoke destoryItemEditor() en fonction du motif de l'événement

  • Vous pouvez interrompre l'événement par défaut de contrôle basé sur des listes par défaut de l'auditeur à l'aide event.preventDefault() pour

une) Modifier les données renvoyées par l'éditeur d'éléments

b) Examiner/valider les données saisies dans l'éditeur d'éléments; Si les données sont incorrectes, vous pouvez interrompre Flex passer les données en arrière de l'éditeur d'élément dans le contrôle à base de liste-

http://knowledge.lapasa.net/?p=153

0

Essayez perdre de vue votre itemEditor. Goto Combo Box Écouteur de changement

protected function comboBox_changeHandler(event:ListEvent):void 
{ 
// set focus out event on datagrid. Its like clicking outside the datagrid 
event.target.parent.parent.parent.dispatchEvent(new FocusEvent(FocusEvent.FOCUS_OUT); 

} 
Questions connexes