在datagrid编辑后,Flex更新dataprovider

时间:2015-05-06 16:38:31

标签: actionscript-3 flex datagrid itemrenderer dataprovider

我在datagrid处有一个itemrenderer和一个dataprovider

问题是当我修改datagrid时,提供商不会使用修改后的值进行更新。

这是我的datagrid

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" borderColor="#FFFFFF" cornerRadius="0">
        <mx:Script>
            <![CDATA[
                import mx.core.Application;
                [Bindable]
                private var provider:ArrayCollection = new ArrayCollection([
                {data:'1'},
                {data:'2"}]);
            ]]>
        </mx:Script>

<!-- Here is the data grid , the provider is groupeCollection, ihave set editable to true-->
            <mx:DataGrid id="myGrid" width="100%" height="80%" 
                dataProvider="{provider}" x="0" editable="true" >
                <mx:columns>
                    <mx:DataGridColumn dataField="data" >
                        <mx:itemRenderer>
                            <mx:Component>
                                <mx:NumericStepper minimum="1" maximum="10000" />
                            </mx:Component>
                        </mx:itemRenderer>
                    </mx:DataGridColumn>
                </mx:columns> 
            </mx:DataGrid>
    </mx:Canvas>

现在,在编辑单元格(dataFiel="data")并打印dataprovider之后,其中没有任何变化。

2 个答案:

答案 0 :(得分:1)

很久没有使用过Flex 3,但您是否可以检查something是否支持ItemRenderer属性boolean?如果是,则将其设置为rendererIsEditor,然后您的渲染器也将作为编辑器。

编辑:我现在尝试了你的代码,似乎在true中对项目进行了一些编译错误。您似乎将ArrayCollection"混合为项目。我更正了它,现在在下面的示例中验证了它工作。您可以单击按钮以在方案之前和之后进行检查。为了方便您粘贴完整的代码,只需粘贴并运行:

'

答案 1 :(得分:0)

您可以使用itemEditor而不是itemRenderer,如果您想在运行时编辑数据,itemRenderer只显示您的值,我们手动设置值

data.propertyname = value;

试试这段代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" borderColor="#FFFFFF" cornerRadius="0">
    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.core.Application;
            [Bindable]
            private var provider:ArrayCollection = new ArrayCollection([
                {data:'1'},
                {data:'2'}]);
        ]]>
    </mx:Script>
    <mx:VBox>
        <!-- Here is the data grid , the provider is groupeCollection, ihave set editable to true-->
        <mx:DataGrid id="myGrid" width="100%" height="80%" 
                     dataProvider="{provider}" x="0" editable="true" >
            <mx:columns>
                <mx:DataGridColumn dataField="data" editorDataField="value">
                    <mx:itemEditor>
                        <mx:Component>
                            <mx:NumericStepper minimum="1" maximum="10000" />
                        </mx:Component>
                    </mx:itemEditor>
                </mx:DataGridColumn>
            </mx:columns> 
        </mx:DataGrid>

        <mx:DataGrid  width="100%" height="80%" 
                     dataProvider="{provider}" x="0" editable="true" >
            <mx:columns>
                <mx:DataGridColumn dataField="data" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:NumericStepper minimum="1" maximum="10000" />
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns> 
        </mx:DataGrid>
    </mx:VBox>
</mx:Canvas>