当我在 a 中编辑一个单元格时,在我完成编辑之前dataGrid
,这些更改不会应用于。dataProvider
有没有办法可以让更改出现在dataProvider
编辑时?
我会假设这样做的方法是对我正在使用的编辑器进行子类化,在这种情况下NumericStepper
,但我不知道该怎么做。
我需要触发某种事件吗?
当我在 a 中编辑一个单元格时,在我完成编辑之前dataGrid
,这些更改不会应用于。dataProvider
有没有办法可以让更改出现在dataProvider
编辑时?
我会假设这样做的方法是对我正在使用的编辑器进行子类化,在这种情况下NumericStepper
,但我不知道该怎么做。
我需要触发某种事件吗?
如果您创建自己的 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>
希望这可以帮助。
如果您需要引用 itemeditor 之外的任何内容,我所做的就是通过 outerDocument.somePublicVar。
因此,如果您需要引用正在编辑的数据网格的数据提供者,您可以更新绑定到数据网格的 var,但它必须是公共的(我认为),或者您可以直接编辑数据网格数据提供者。
在项目编辑器中,您可以捕获更改事件并从那里更新数据提供者中的值。但请记住,最终编辑项事件将被抛出,并且如果您在那里进行任何可能与您的数据提供者混淆的处理。