Вы, вероятно, сбрасывает selectedIndex слишком рано, до обновления DataGrid, но трудно сказать точно, так как ваш код вызывает несколько функций. Попробуйте это
Добавьте переменную "кэшированная позиция", например:
protected var cachedPosition : int;
Затем измените ваш метод deleteCompetenta
private function deleteCompetenta():void
{
try {
cachedPosition = dgCompetente.selectedIndex;
if (position >= 0) {
colCompetente.removeItemAt(position);
// don't reset this here
// dgCompetente.selectedIndex = position;
}
clearEdit(fieldsCompetente);
saveCompetente();
} catch (error:Error) {
errorHandler.defaultErrorHandler(error);
}
}
Затем добавьте updateCompleteHander в DataGrid:
<mx:DataGrid id="dgCompetente" includeIn="Competente" x="10" y="66" width="547" height="468"
change="dgCompetente_changeHandler(event)" dataProvider="{colCompetente}"
editable="false" updateComplete="updateCompleteHandler(event)">
И сбросить выбранный индекс при обновлении CompleteHandler:
protected function updateCompleteHandler(event:Event):void{
// reset here
dgCompetente.selectedIndex = cachedPosition;
}
Это решило бы это?