Вообще, с хмл могут возникнуть сложности поскольку большинство методов по работе с хмл создают новый XML или XmlList, т.е. изменение его не повлечёт изменение начального, сразу не могу понять что и как должно быть, и это собственно не самое благодарное занятие

Код AS3:
selected="{data.online}"
это для задания начальных значей в общем-то, т.е. в данном примере это не обязательно, но если какой-то online будет на старте true, то это задание всё исправит.

Код AS1/AS2:
click="data.online=!data.online"
При клике мы изменяем содержимое, само чекБокс поле забиндино на это содержимое см. выше
Цитата:
|
И зачем тут добавили поле которого нет в изначальной структуре данных? dataField="online"
|
Как это его нет?
Если я правильно понял вопрос, то этот столбец добавлен просто для показаетльных выступлений.
Цитата:
|
Обязательно ли добавлять элемент в мой XML
|
Если хочешь всё таки работать с XML то предлагая погуглить чуть

, во всяком случае я бы не работал с ним.
Добавлено через 14 минут
Или собственно вот так:

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.controls.CheckBox;
[Bindable]
private var _xml:XMLList = new XMLList('<msg><id>1</id><date>10.11.2009</date><subject>I lost my Password</subject><message>Hi there. I lost my pass dude. Need help</message></msg><msg><id>2</id><date>11.11.2009</date><subject>I dit that</subject><message>Admin, call me pls.</message></msg>');
private var _arr:Array;
private function init():void
{
_arr = new Array(_xml.length);
gridMsg.addEventListener('CheckBoxChanged',change);
}
private function change(e:Event):void
{
_arr[(e.target as CheckBox).data.id] = (e.target as CheckBox).selected;
trace (_arr);
}
]]>
</mx:Script>
<mx:DataGrid id="gridMsg" dataProvider="{_xml}">
<mx:columns>
<mx:DataGridColumn>
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox click="onClick(event)">
<mx:Script>
<![CDATA[
private function onClick(e:MouseEvent):void
{
var ev:Event = new Event('CheckBoxChanged',true,false);
(this as EventDispatcher).dispatchEvent(ev);
}
]]>
</mx:Script>
</mx:CheckBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="date" headerText="Date"/>
<mx:DataGridColumn dataField="subject" headerText="Subject"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>