NO tengo ninguna experiencia en Flex y estoy luchando para hacer un formulario.
Tengo un código que llena un dataGrid con un resultado de un php
Puedo editar el contenido del dataGrid sin problemas y subir los resultados a la base de datos.
El problema siempre lo tengo cuando busco algo dentro del datagrid, nuevamente con un textinput y el php, relleno el datagrid con un nuevo contenido, pero ya no puedo referenciarme a el, siempre me sale el mismo error, de que estoy apuntando a algo que no existe (1009).
La linia que me rompe es:
agentes[event.dataField]=(agentesDg.itemEditorInstance as mx.controls.TextInput).text;
En principio, creo que esta linea le dice al objeto agentes (datagrid) la line que quiero editar, ya que luego lanzo la función.
pinguService.updateAgentes(agentes);
Les pido un poco de ayuda o algún hilo para aprender lo más básico.
Muchas Gracias.
Adjunto el código.
Código Flex :
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:pinguservice="services.pinguservice.*" currentState="pingu" xmlns:valueObjects="valueObjects.*">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.dataGridClasses.MXDataGridItemRenderer;
import mx.events.DataGridEvent;
import mx.events.FlexEvent;
import mx.events.ListEvent;
import mx.rpc.events.ResultEvent;
protected function agentesDg_creationCompleteHandler(event:FlexEvent):void
{
getAgentesResult.token = pinguService.getAgentes();
}
protected function editarBtn_clickHandler(event:MouseEvent):void
{
currentState="pingu_upd";
}
protected function button_clickHandler(event:MouseEvent):void
{
agentes.nombre = nombreTextInput.text;
agentes.pingu_1 = parseInt(pingu_1TextInput.text);
agentes.pingu_2 = parseInt(pingu_2TextInput.text);
agentes.pingu_3 = parseInt(pingu_3TextInput.text);
agentes.pingu_4 = parseInt(pingu_4TextInput.text);
agentes.pingu_5 = parseInt(pingu_5TextInput.text);
agentes.pingu_6 = parseInt(pingu_6TextInput.text);
agentes.pingu_7 = parseInt(pingu_7TextInput.text);
if (agentes.id==0){
createAgentesResult.token = pinguService.createAgentes(agentes);
}
else
{
updateAgentesResult.token = pinguService.updateAgentes(agentes);
}
}
protected function updateAgentesResult_resultHandler(event:ResultEvent):void
{
currentState="pingu";
}
protected function AddBtn_clickHandler(event:MouseEvent):void
{
currentState="pingu_add";
agentes=new Agentes;
}
protected function createAgentesResult_resultHandler(event:ResultEvent):void
{
currentState="pingu";
agentes.id=event.result as int;
agentesDg.dataProvider.addItem(agentes);
agentesDg.selectedItem=agentes;
agentesDg.verticalScrollPosition=agentesDg.selectedIndex;
agentesDg.validateNow();
}
protected function deleteAgentesResult_resultHandler(event:ResultEvent):void
{
agentesDg.dataProvider.removeItemAt(agentesDg.selectedIndex);
currentState="pingu";
}
protected function DeleteBtn_clickHandler(event:MouseEvent):void
{
deleteAgentesResult.token = pinguService.deleteAgentes(agentes.id);
}
protected function pinguBtn_clickHandler(event:MouseEvent):void
{
currentState="pingu";
getAgentesResult.token = pinguService.getAgentes();
}
protected function updateBtn_clickHandler(event:MouseEvent):void
{
currentState="pingu";
getAgentesResult.token = pinguService.getAgentes();
}
protected function agentesDg_changeHandler(event:ListEvent):void
{
currentState="pingu";
}
protected function agentesDg_itemEditEndHandler(event:DataGridEvent):void
{
agentes[event.dataField]=(agentesDg.itemEditorInstance as mx.controls.TextInput).text;
pinguService.updateAgentes(agentes);
}
protected function searchTxt_focusOutHandler(event:FocusEvent):void
{
if(searchTxt.text!=""){
getAgentesResult.token = pinguService.getAgentesByName(searchTxt.text);
}
else{
getAgentesResult.token = pinguService.getAgentesByName('Josep');
}
}
]]>
</fx:Script>
<s:states>
<s:State name="pingu"/>
<s:State name="pingu_upd"/>
<s:State name="pingu_add"/>
</s:states>
<fx:Declarations>
<s:CallResponder id="getAgentesResult" />
<pinguservice:PinguService id="pinguService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
<valueObjects:Agentes id="agentes"/>
<s:CallResponder id="updateAgentesResult" result="updateAgentesResult_resultHandler(event)"/>
<s:CallResponder id="createAgentesResult" result="createAgentesResult_resultHandler(event)"/>
<s:CallResponder id="deleteAgentesResult" result="deleteAgentesResult_resultHandler(event)"/>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Binding source="agentesDg.selectedItem as Agentes" destination="agentes"/>
<s:Label text="Flex Ranking Project" fontSize="29" color="#D5D4D4" y="188" horizontalCenter="-5" includeIn="pingu"/>
<mx:DataGrid y="277" id="agentesDg" change="agentesDg_changeHandler(event)" creationComplete="agentesDg_creationCompleteHandler(event)" dataProvider="{getAgentesResult.lastResult}" width="467" textAlign="center" verticalAlign="middle" horizontalCenter="0" height="152" change.pingu="agentesDg_changeHandler(event)" editable="true"
itemEditEnd="agentesDg_itemEditEndHandler(event)">
<mx:columns>
<mx:DataGridColumn headerText="agente" dataField="nombre"/>
<mx:DataGridColumn headerText="P1" dataField="pingu_1"/>
<mx:DataGridColumn headerText="P2" dataField="pingu_2"/>
<mx:DataGridColumn headerText="P3" dataField="pingu_3"/>
<mx:DataGridColumn headerText="P4" dataField="pingu_4"/>
<mx:DataGridColumn headerText="P5" dataField="pingu_5"/>
<mx:DataGridColumn headerText="P6" dataField="pingu_6"/>
<mx:DataGridColumn headerText="P7" dataField="pingu_7"/>
</mx:columns>
</mx:DataGrid>
<s:Button y="436" label="Editar" id="EditarBtn" horizontalCenter="0" click="editarBtn_clickHandler(event)" includeIn="pingu"/>
<mx:Form includeIn="pingu_add,pingu_upd" y="548" horizontalCenter="64">
<mx:FormItem label="P5">
<s:TextInput id="pingu_5TextInput" text="{agentes.pingu_5}" width="56"/>
</mx:FormItem>
<mx:FormItem label="P6">
<s:TextInput id="pingu_6TextInput" text="{agentes.pingu_6}" width="56"/>
</mx:FormItem>
<mx:FormItem label="P7">
<s:TextInput id="pingu_7TextInput" text="{agentes.pingu_7}" width="56"/>
</mx:FormItem>
</mx:Form>
<mx:Form includeIn="pingu_add,pingu_upd" y="506" horizontalCenter="2">
<s:TextInput id="nombreTextInput" text="{agentes.nombre}" width="79" textAlign="center"/>
</mx:Form>
<s:Button id="GrabarBtn" label="Grabar" click="button_clickHandler(event)" y="665" horizontalCenter="90" includeIn="pingu_add,pingu_upd"/>
<mx:Form includeIn="pingu_add,pingu_upd" defaultButton="{GrabarBtn}" y="548" horizontalCenter="-60">
<mx:FormItem label="P1">
<s:TextInput id="pingu_1TextInput" text="{agentes.pingu_1}" width="56"/>
</mx:FormItem>
<mx:FormItem label="P2">
<s:TextInput id="pingu_2TextInput" text="{agentes.pingu_2}" width="56"/>
</mx:FormItem>
<mx:FormItem label="P3">
<s:TextInput id="pingu_3TextInput" text="{agentes.pingu_3}" width="56"/>
</mx:FormItem>
<mx:FormItem label="P4">
<s:TextInput id="pingu_4TextInput" text="{agentes.pingu_4}" width="56"/>
</mx:FormItem>
</mx:Form>
<s:Button includeIn="pingu" y="248" label="Crear" id="AddBtn" click="AddBtn_clickHandler(event)" horizontalCenter="200"/>
<s:Button y="437" label="Eliminar" id="DeleteBtn" enabled="false" horizontalCenter="200" enabled.pingu_upd="true" click="DeleteBtn_clickHandler(event)"/>
<s:Label text="Flex Ranking Project" fontSize="29" color="#D5D4D4" y="188" horizontalCenter="-5" includeIn="pingu_upd"/>
<s:Label text="Flex Ranking Project" fontSize="29" color="#D5D4D4" y="188" horizontalCenter="-5" includeIn="pingu_add"/>
<s:Button y="436" label="Volver" id="pinguBtn" enabled.pingu="false" click.pingu_upd="pinguBtn_clickHandler(event)" click.pingu_add="pinguBtn_clickHandler(event)" horizontalCenter.pingu="-198" horizontalCenter.pingu_upd="-198" horizontalCenter.pingu_add="-198"/>
<s:Button y="248" label="Actualizar" id="updateBtn" click.pingu="updateBtn_clickHandler(event)" click.pingu_upd="updateBtn_clickHandler(event)" click.pingu_add="updateBtn_clickHandler(event)" horizontalCenter.pingu_add="-197" horizontalCenter.pingu_upd="-197" horizontalCenter.pingu="-197" label.pingu="Actualizar"/>
<s:TextInput x="522" y="247" id="searchTxt" text.pingu="agente..." focusOut.pingu="searchTxt_focusOutHandler(event)"/>
</s:Application>
