我在Flex3工作。这里我有一个包含数据的数据网格。某些列是可编辑的。当用户更改列数据时,将调用Web服务。这里使用focusOut的功能,我通过focusOut函数发送来自datagrid的数据来调用Web服务。现在,我想在用户更改列数据并按下键盘键'Enter'时调用Web服务。在这里我可以调用函数,但事件不会将datagrid的数据传递给被调用的函数。有人给我解决方案。谢谢。
答案 0 :(得分:1)
使用enter事件发送数据 我的要求我使用以下内容进行更新过程(我认为你也期待同样的事情)
检查代码..希望这会有用......
<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"/>
行动脚本......使用以下
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());
}
}
}
答案 1 :(得分:0)
您可以使用enter
上的itemEditor
事件将数据发送到您的网络服务。
这是一个粗略的例子:
<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>
答案 2 :(得分:0)