DG editing is session-based, Tab or focus out commits the data.  I'd probably 
commit the data on a change event from the CheckBox

Alex Harui
Flex SDK Developer
Adobe Systems Inc.<http://www.adobe.com/>
Blog: http://blogs.adobe.com/aharui

From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf 
Of luvfotography
Sent: Tuesday, December 15, 2009 1:19 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Need help refreshing datagrid - doesn't update in time if 
I use keyboard listner



Hi, I've got an eventListener listening for keyboard events and a checkbox in a 
datagrid column, and after I select a checkbox and immediately hit a key, then 
the item selected is not picked up.
If I select a checkbox in the datagrid, then click outside the datagrid, then 
hit a key, then the item selected is recorded properly.
How Can I fix this?

here is the code, to run the example, click on the two checkboxes, then 
immediatly press a key, only the first name is reported.

example here: http://elizabethcoda.com/datagridCheckbox.swf

code:
<?xml version="1.0"?>
<!-- itemRenderers\inline\CBInlineCellEditor.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; 
applicationComplete="init()">

<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;

[Bindable]
private var myDP:ArrayCollection = new ArrayCollection([
{label1:"Order #2314", contact:"Marge",
quant:3, solddate:new Date(2005, 0, 1), Sent:false},
{label1:"Order #2315", contact:"Bart",
quant:3, solddate:new Date(2005, 0, 5), Sent:false}
]);
private function init():void {
addEventListener(KeyboardEvent.KEY_UP,showSelected);
}
private function sent(e:Event):void {
sent_ta.text = '';
for(var i:int = 0; i < myDP.length;i ++ ) {
if(myDP[i].Sent) {
sent_ta.text += " sent to " + myDP[i].contact + '\n';
}
}
}
private function showSelected(event:KeyboardEvent):void {
sent_ta.text = '';
for (var i:int=0; i < myDP.length; i++) {
if (myDP[i].Sent) {
sent_ta.text += " sent to " + myDP[i].contact + '\n';
}
}
}
]]>
</mx:Script>

<mx:DataGrid id="myDG"
dataProvider="{myDP}"
variableRowHeight="true"
width="500" height="250"
editable="true">
<mx:columns>
<mx:DataGridColumn dataField="label1"
headerText="Order #"
editable="false"/>
<mx:DataGridColumn dataField="quant"
headerText="Quantity"
itemEditor="mx.controls.NumericStepper"
editorDataField="value"/>
<mx:DataGridColumn dataField="solddate"
headerText="Date"
itemRenderer="mx.controls.DateField"
rendererIsEditor="true"
editorDataField="selectedDate"/>
<mx:DataGridColumn dataField="contact" />
<mx:DataGridColumn dataField="Sent"
itemRenderer="mx.controls.CheckBox"
rendererIsEditor="true"
editorDataField="selected"/>
</mx:columns >
</mx:DataGrid>
<mx:Button label="What's sent?" click="sent(event)"/>
<mx:TextArea id="sent_ta" height="70"/>
</mx:Application>

Reply via email to