Flex:在dataGrid cellEditor中立即编辑

时间:2008-12-19 16:12:21

标签: flex datagrid numericstepper

当我在dataGrid中修改单元格时,在我完成编辑之前,更改不会应用于dataProvider。有没有办法让我可以在编辑时在dataProvider中显示更改?

我认为这样做的方法是对我正在使用的编辑器进行子类化,在本例中为NumericStepper,但我不知道如何去做。

我需要触发某种事件吗?

2 个答案:

答案 0 :(得分:0)

如果你需要在itemeditor之外引用任何东西,我这样做的方法是通过outerDocument.somePublicVar。

因此,如果您需要引用正在编辑的数据网格的数据提供者,您可以更新已绑定到数据网格的var,但它必须是公共的(我认为),或者您可以直接编辑datagrids dataprovider。

在项目编辑器中,您可以捕获更改事件并从那里更新数据提供者中的值。但请记住,如果您在那里进行任何处理可能会弄乱您的数据提供程序,那么将抛出结束编辑项事件。

答案 1 :(得分:0)

如果您创建自己的itemEditor / itemRenderer,则可以执行以下操作:

<mx:TextInput xmlns:mx="..." change="onChange(event)"
    implements="mx.controls.listClasses.IDropInListItemRenderer">
    <mx:Script>
        <![CDATA[

        import mx.controls.dataGridClasses.DataGridListData;
        import mx.controls.listClasses.BaseListData;
        [Bindable("dataChange")] private var _listData : BaseListData;
        public function get listData():BaseListData
        {
            return _listData;            
        }                   
        public function set listData( value : BaseListData ) : void
        {
            _listData = value;
        }

        private function onChange(event:Event):void
        {
             this.data[ (listData as DataGridListData).dataField ] = this.text;
        }
        ]]>
    </mx:Script>
</mx:TextInput>

希望这会有所帮助。