【发布时间】:2013-03-18 00:39:46
【问题描述】:
我在我的一个项目中使用DataGrid,其中一个列使用自定义ItemRenderer 以将布尔值表示为CheckBox
<s:DataGrid id="clients" resizableColumns="false">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="fullName" headerText="Client name" />
<s:GridColumn dataField="active" headerText="Active?" width="90"
itemRenderer="CheckBoxGridItemRenderer"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>
这里是CheckBoxGridItemRenderer的代码:
<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
clipAndEnableScrolling="true">
<fx:Script>
<![CDATA[
override public function prepare(hasBeenRecycled:Boolean):void {
checkBox.selected = Boolean(data[column.dataField]);
}
]]>
</fx:Script>
<s:CheckBox id="checkBox" horizontalCenter="0" />
</s:GridItemRenderer>
现在这是我的问题:处理我声明为 DataGrid 的类中的数据更改的最佳方法是什么?
我尝试在我的自定义项渲染器类中更改数据值:
private function valueChange():void
{
data.active = checkBox.selected;
}
[...]
<s:CheckBox id="checkBox" change="valueChange()" />
然后在 DataGrid 的 dataProvider 上收听 CollectionEvent.COLLECTION_CHANGE 事件,但我从不处理任何更改。有什么想法或建议吗?
【问题讨论】:
-
那么,您想从 DataGrid 中更改数据吗?尝试将
rendererIsEditable="true"添加到列中。 -
这不会改变任何东西。仅供参考,我已经能够在没有它的情况下更改
CheckBox值。但我想在我的 ItemRenderer 之外处理相关事件,即在DataGrid被实例化的类中
标签: actionscript-3 apache-flex datagrid event-handling dataprovider