如何更新dataprovider数据?

时间:2013-06-15 03:49:58

标签: actionscript-3 flex4

我有一个datagrid,可编辑选项设置为true。如果我在网格视图中更改数据,则相同的更改应适用于dataprovider。我是flex的新用户,任何人都可以帮我解决此问题。 我的想法是我们需要使用ArrayCollection属性或itemUpdate方法。

1 个答案:

答案 0 :(得分:0)

查看我的代码。

我在数据提供程序中有一个字段。在数据网格中,a已添加此字段两次,以便您查看编辑的效果。如果您在第二列中编辑值并按Enter,则可以在第一列中看到结果。

因此,您的数据提供商始终是最新的。

这是working example

如果您有其他意思,请告诉我。

<?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">
<fx:Script>
    <![CDATA[                
        import mx.collections.ArrayCollection;

        [Bindable]private var myDP:ArrayCollection = new ArrayCollection([
            {myfield:"Hello"},
            {myfield:"World"}                
        ]);         
    ]]>
</fx:Script>

<s:DataGrid id="myDG" x="30" y="30" height="120" dataProvider="{myDP}" editable="true">
    <s:columns>
        <s:ArrayList>

            <s:GridColumn dataField="myfield" headerText="My Field" width="120"/>       

            <s:GridColumn dataField="myfield" headerText="My Field Edit" editable="true" rendererIsEditable="true" width="120">
                <s:itemRenderer>
                <fx:Component>
                    <s:GridItemRenderer>
                        <fx:Script>
                            <![CDATA[
                                import spark.events.TextOperationEvent;
                                protected function textinput_changeHandler(event:TextOperationEvent):void
                                {
                                    var value:String = (event.currentTarget as TextInput).text
                                    data[column.dataField] = value; 
                                }
                            ]]>
                        </fx:Script>

                        <s:TextInput text="{data['myfield']}" change="textinput_changeHandler(event)"/>

                    </s:GridItemRenderer>
                </fx:Component>
                </s:itemRenderer>
            </s:GridColumn>
        </s:ArrayList> 
    </s:columns >
</s:DataGrid>

</s:Application>