2 Stimmen

Schlüsselereignisse im Datengitter in Flex3

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!

1voto

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());

                        }

                    }

                }

0voto

Jason Towne Punkte 7844

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>

0voto

Imran Punkte 2684

Ich denke, Sie sollten Event itemEditEnd Einzelheiten sind zu finden unter

DataGrid-Ereignisse

ein nützliches Beispiel ist

Erstellen eines editierbaren DataGrid-Steuerelements in Flex

hofft, dass das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X