Bonjour à tous,
Je souhaite insérer dans un "DataGrid" une colonne qui contient des boutons. Et je souhaite qu'une pression sur un bouton modifie des valeurs affichées dans le "DataGrid" (sur la ligne sur laquelle est positionné le bouton).
Le "DataProvider" est lié au "DataGrid" ([Bindable]). Donc toute modification d'une valeur du DataProvider devrait se répercuter sur le DataGrid. Il n'en est rien. Il semble qu'il faille faire quelque chose qui ressemble à:
event.currentTarget.dataProvider.itemUpdated(event.itemRenderer.data);
J'ai utilisé la ligne ci-dessus pour résoudre un autre problème : Valider les valeurs entrées via l'éditeur d'item par défaut du DataGrid.
Cela dit, avec le bouton, je ne parviens pas à me dépatouiller. J'ai essayé beaucoup de choses, mais je suis bloqué. Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:custom="componants.*" horizontalAlign="center" verticalAlign="middle"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; [Bindable] public var provider:ArrayCollection = new ArrayCollection([ {Nom:'Dupont', Prenom:'Bernard', Age:10, Tel:'0123456789'}, {Nom:'Dupont', Prenom:'Alain', Age:20, Tel:'9876543210'}, {Nom:'Durand', Prenom:'Fabien', Age:30, Tel:'7410852963'}]); ]]> </mx:Script> <mx:Box> <mx:DataGrid id="IdDataGridMain" editable="true" dataProvider="{provider}" variableRowHeight="true" resizableColumns="true" wordWrap="true"> <mx:columns> <mx:DataGridColumn dataField="Nom" headerText="Nom abonné"/> <mx:DataGridColumn dataField="Prenom" headerText="Prénom abonné"/> <mx:DataGridColumn dataField="Age" headerText="Age" resizable="true" itemEditor="componants.EmailEditor" editorDataField="value"/> <mx:DataGridColumn dataField="Tel" headerText="Téléphone"/> <mx:DataGridColumn editable="false"> <mx:itemRenderer> <mx:Component> <mx:Button label="RAS" click="RAS(event)"> <mx:Script> <![CDATA[ import flash.events.Event; public function RAS(event:Event):void { data.Tel = "0000000000"; } ]]> </mx:Script> </mx:Button> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns> </mx:DataGrid> </mx:Box> </mx:Application>
Quand je presse un bouton "RAS", le "DataProvider" est modifié. Le numéro de téléphone associé est mis à zéro. Mais ce changement n'est pas répercuté sur le "DataGrid".
Si, après avoir pressé le bouton, vous modifiez une cellule dans la colonne "Age", alors les changements sont visibles. Donc je pense qu'il faut envoyer un évènement... Mais comment?
Qui pourrait m'aider?
Merci beaucoup,
Denis
Partager