Ich arbeite mit Flex3. Hier habe ich eine Datentabelle, die Daten enthält. einige Spalten sind bearbeitbar. wenn der Benutzer die Spaltendaten ändert, wird der Webdienst aufgerufen. Mit der Funktion focusOut rufe ich den Webservice auf, indem ich die Daten, die von der Datentabelle kommen, über die Funktion focusOut sende. Nun möchte ich den Webservice aufrufen, wenn der Benutzer die Spaltendaten ändert und die Taste 'Enter' drückt. Hier kann ich die Funktion aufrufen, aber das Ereignis überträgt die Daten des Datengitters nicht an die aufgerufene Funktion. Kann mir jemand eine Lösung für dieses Problem geben? Vielen Dank!
Antworten
Zu viele Anzeigen?Verwenden Sie das Enter-Ereignis, um die Daten zu senden In meiner Anforderung habe ich folgendes für den UPDATE PROCESS verwendet (ich denke, Sie erwarten auch dasselbe)
CHECKOUT THE CODE..hope this will be useful....
<mx:DataGrid id="datagrid2" dataProvider="{cat}" editable="true" keyDown="gridkey(event)" x="10" y="152" visible="true" width="703">
<mx:columns>
<!--<mx:DataGridColumn dataField="catCode" headerText="CATEGORY CODE" editable="false"/>-->
<mx:DataGridColumn dataField="catDesc" headerText="CATEGORY DESCRIPTION" editable="true">
<mx:itemEditor >
<mx:Component>
<mx:TextInput errorColor="#0294b3" errorString="Click Enter and Save" restrict="A-Za-z0-9" maxChars="15"/>
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="updatedate" headerText="LAST UPDATE DATE" editable="false"/>
IM AKTIONSSKRIPT ... FOLGENDES VERWENDEN
public function gridkey(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.ENTER)
{
var obj:Object = event.currentTarget.selectedItem;
for(var n:String in cat)
{
var items:CategoryVO = cat[n] as CategoryVO;
if(obj.catCode == items.catCode && obj.orgId == items.orgId)
{
items.catCode=obj.catCode;
items.catDesc=obj.catDesc;
items.updateby=obj.updateby;
items.alter = "Altered"; //use private var _alter:String; in flex VO class where remote class getters and settrs are used...//
//Alert.show(items.id.toString());
DeletedItems.push(items.catCode);
// Alert.show(DeletedItems.toString());
}
}
}
Sie könnten die enter
Veranstaltung auf Ihrer itemEditor
um die Daten an Ihren Webdienst zu senden.
Hier ist ein grobes Beispiel:
<mx:itemEditor>
<mx:Component>
<mx:VBox>
<mx:TextInput id="setCity" width="130" text="{data.City}" enter="outerDocument.callMyWebService(data)"/>
</mx:VBox>
</mx:Component>
</mx:itemEditor>
Ich denke, Sie sollten Event itemEditEnd Einzelheiten sind zu finden unter
ein nützliches Beispiel ist
Erstellen eines editierbaren DataGrid-Steuerelements in Flex
hofft, dass das hilft