Я использую DataGrid
в одном из моих проектов, с обычаем ItemRenderer
для одного столбца представляет логическое значение, как CheckBox
Как обрабатывать изменения в пользовательском GridItemRenderer
<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>
Теперь вот мой вопрос: Что такое лучший способ справиться с изменением данных из класса I объявлен DataGrid
?
Я попытался изменить значение данных внутри моего пользовательского класса средства визуализации элементов:
private function valueChange():void
{
data.active = checkBox.selected;
}
[...]
<s:CheckBox id="checkBox" change="valueChange()" />
, а затем слушать CollectionEvent.COLLECTION_CHANGE
события на DataProvider в DataGrid, но я никогда не обрабатывать каких-либо изменений. Любые мысли или советы?
Итак, вы хотите изменить данные из DataGrid? Попробуйте добавить в столбец 'rendererIsEitable =" true "'. – dvdgsng
Это ничего не меняет. FYI Я уже могу изменить значение CheckBox без него. Но я хотел бы обработать связанное событие вне моего ItemRenderer, то есть в классе, в котором создан экземпляр DataGrid. – duTr