Flex3 数据网格上的关键事件

发布于 2024-11-01 09:56:55 字数 201 浏览 0 评论 0原文

我在 Flex3 工作。这里我有一个包含数据的数据网格。有些列是可编辑的。当用户更改列数据时,调用 Web 服务。这里使用 focusOut 函数,我通过 focusOut 函数发送来自数据网格的数据来调用 Web 服务。现在我想在用户更改列数据并按键盘键“Enter”时调用 Web 服务。在这里我可以调用函数,但事件不会将数据网格的数据携带到被调用的函数。有人给我解决这个问题。谢谢。

I am working in Flex3. Here I have a datagrid which contains data. some columns are editable. when the user changes the column data web service is called. Here using function of focusOut, I am calling the web service by sending the data which comes from the datagrid through focusOut function. Now I want to call the web service when the user changes the column data and presses keyboard key 'Enter'. Here I can call function but the event does not carry datagrid's data to the function being called. Some one give me solution for this. Thank You.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苍暮颜 2024-11-08 09:56:55

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

                        }

                    }

                }

use the enter event to send the data
my requirement i used the following for UPDATE PROCESS( I THINK YOU ALSO EXPECTING FOR THE SAME)

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"/>

IN ACTION SCRIPT...USE THE FOLLOWING

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

                        }

                    }

                }
鹤舞 2024-11-08 09:56:55

您可以使用 itemEditor 上的 enter 事件将数据发送到您的 Web 服务。

这是一个粗略的例子:

<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>

You could use the enter event on your itemEditor to send the data to your web service.

Here's a rough example:

<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>
雄赳赳气昂昂 2024-11-08 09:56:55

我认为你应该使用事件 itemEditEnd
详细信息可以在

DataGrid 事件

一个有用的示例是

创建一个Flex 中可编辑的 DataGrid 控件

希望有帮助

I think you should use Event itemEditEnd
details can be found at

DataGrid Events

an useful example is

Creating an editable DataGrid control in Flex

hopes that helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文