Bonjour, j'ai fais une interface web en flex mais j'ai un problème avec mes combobox dans mes datagrid.
Ils mettent bien a jour ma base de donnée mais une fois sur 15 apparemment l'event editCellEndScriptTest n'est pas levé et le choix du combobox non sauvegardé.
J'ai un peu bricolé pour pouvoir le remarquer direct (a chaque modif je refais une requête sql pour mettre a jour mais ce n'est pas tres pratique et une erreur est toujours possible.
Exemple de combobox
Datagrid
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 <?xml version="1.0" encoding="utf-8"?> <!--Composant permetant d'indiquer si un test a des parametres--> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center"> <mx:Script> <![CDATA[ import mx.controls.Alert; // Define a property for returning the new value to the cell. public var result:Number; [Bindable] private var checkValue:Array = new Array ("No", "Yes"); // Override the set method for the data property. [Bindable] override public function set data(value:Object):void { super.data = value; if (value != null) { check.selectedIndex=value.aParametresCol; result = check.selectedIndex; } } public function onChange():void { result = check.selectedIndex; parentDocument.dataGridScriptTest.editedItemPosition =null; } ]]> </mx:Script> <mx:ComboBox id="check" dataProvider="{checkValue}" width="130" textAlign="center" change="onChange()"/> </mx:VBox>
Je ne met pas le code appelé lors de la sauvegarde pcq j'ai vérifié quand il bug apparemment l'event n'est pas lancé et donc il ne passe pas dans ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <composant:DoubleClickDataGrid id="dataGridScriptTest" editable="true" resizableColumns="true" headerRelease="setOrderScriptTest(event);" dataProvider="{dataArrScriptTest}" variableRowHeight="true" left="5" top="141" bottom="50" right="5"> <composant:columns> <mx:DataGridColumn headerText="Command line" dataField="commandeCol" /> <mx:DataGridColumn textAlign="center" headerText="Does the function have parameters?" dataField="aParametresCol" rendererIsEditor="true" editorDataField="result" itemRenderer="itemRenderer.ParamRenderer"/> <mx:DataGridColumn headerText="Description of the test script" dataField="descriptionScriptTestCol"/> </composant:columns> </composant:DoubleClickDataGrid >
DoubleClicDatagrid (trouvé sur internet permettant de sélectionner une ligne sans directement entrer en edition de la case)
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 <?xml version="1.0" encoding="utf-8"?> <mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.controls.listClasses.IListItemRenderer; import mx.events.ListEvent; private var _selectedRow:int = -1; private var _clickCount:uint; override protected function mouseUpHandler( event:MouseEvent ):void { editable = (_clickCount == 2); super.mouseUpHandler( event ); } override protected function selectItem( item:IListItemRenderer, shiftKey:Boolean, ctrlKey:Boolean, transition:Boolean=true ):Boolean { var returnValue:Boolean = super.selectItem( item, shiftKey, ctrlKey, transition ); if (selectedIndex == _selectedRow) { _clickCount = 2; } else { _selectedRow = selectedIndex; _clickCount = 1; } return returnValue; } ]]> </mx:Script> </mx:DataGrid>
Si qqun a une idée merci d'avance
Partager