参考:http://blog.csdn.net/newskl/archive/2009/09/11/4538780.aspx
DataGrid设置editable 为true
DataGrid设置itemEditEnd 响应为mergePTO 函数
不需要的DataGridColumn 设置editable 为false
<mx:DataGrid id="ptoDG" width="100%" height="100%"
dataProvider="{modelLocator.ptoArrayCollection}"
editable="true" itemEditEnd="mergePTO(event)">
<mx:columns>
<mx:DataGridColumn headerText="User" labelFunction="userFunction"
editable="false" />
<mx:DataGridColumn headerText="PTO" dataField="pto" />
<mx:DataGridColumn headerText="Factor" dataField="factor" />
<mx:DataGridColumn headerText="Sprint" labelFunction="sprintFunction"
editable="false" />
<mx:DataGridColumn headerText="Release" labelFunction="releaseFunction"
editable="false" />
<mx:DataGridColumn headerText="Product" labelFunction="productFunction"
editable="false" />
</mx:columns>
</mx:DataGrid>
private function mergePTO(e:DataGridEvent):void
{
// 如果没有更新数据则直接返回,例如键盘ESC退出
if (e.reason == DataGridEventReason.CANCELLED) return;
else
{
// 获取编辑单元格的值
var newData:String = TextInput(e.currentTarget.itemEditorInstance).text;
switch (e.dataField)
{
case "pto":
if (newData != ptoDG.selectedItem.pto)
{
var selectedPTO:UserProp = ptoDG.selectedItem as UserProp;
selectedPTO.pto = newData;
var evt:PTOAdminEvent =
new PTOAdminEvent(PTOAdminEvent.EDIT_PTO, selectedPTO);
CairngormEventDispatcher.getInstance().dispatchEvent(evt);
}
break;
case "factor":
if (newData != ptoDG.selectedItem.factor)
{
var selectedPTO1:UserProp = ptoDG.selectedItem as UserProp;
selectedPTO1.factor = newData;
var evt1:PTOAdminEvent =
new PTOAdminEvent(PTOAdminEvent.EDIT_PTO, selectedPTO1);
CairngormEventDispatcher.getInstance().dispatchEvent(evt1);
}
break;
}
}
}