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

Код AS3:
raboti.addItem({id:i, Работы:"", Цена:st.text, Норма:nor, Сумма:drabotig, Исполнитель:""});
Хотя AS3 допускает кирилические символы в переменных. И эта запись идентична

Код AS3:
var myObject:Object = new Object();
myObject.id = i;
myObject.Цена = st.text;
myObject.Норма = nor;
...
raboti.addItem(myObject);
Соответстенно обратиться к полученному объекту вы можете как при обычной работе с объектом-ассоциативным массивом:

Код AS3:
function onItemEditEnd(e:DataGridEvent):void
{
var cellEditor:DataGridCellEditor = raboti.itemEditorInstance as DataGridCellEditor;
var data:Object = cellEditor.data; // или через listData таким же оразом для колонки
data["Сумма"] = data["Работы"] + data["Цена"] + data["Норма"] + data["Исполнитель"]; //или data.Cумма = data.Работы ...
}
Цитата:
|
пока реализовано со всех, не могу понять как обратиться к определенной ячейке
|
Логика работы с DataGrid не совсем такая как могли привыкнуть при работе с таблицами в Exel, например.
Подсчет значений необходимо производить в модели данных, а не по индексу ячеек, которые в нем не задуманы для использования как порядковый номер.
Для повышения производительности DataGrid (точнее его составные элементы List) построен так, что ячейки в нем не пересоздаются при изменении данных, а постоянно отрисованы на экране в и CellRendrer ( класс отрисовки ячеек) приходят ссылки на текущую модель данных.
Лучше всего отнаследоваться от CellRendrer и в сеттере data вставить свой обработчик на поступление данных

Код AS3:
override public function set data(value:Object):void
{
if (value != _data) //Ячейка получила ссылку на новый объект модели данных, напрмер при пересортировке.
{
var dataRow:ModelRow = value as ModelRow ; //ModelRow - это тот же объект item в вашем примере, но типихированный
//Отписываемся / подписываемся на событие обновления данных. Пишем прочую логику.
}
}
Такая логика позволяет DataGrid отображать огромное количество зписий в компоненте, т.к. фактически визуально представлены лишь те ячейки которые отображены сейчас на экране, те что за прокрутками не отрисовываются.
Объект модели данных приходящий в поле data представляет из себя всю строрку. Узнать какая ячейка сечас текущая для этого элемента (то есть имя текущей колонки) можно из сеттера CellRendrer ListData

Код AS3:
override public function set listData(value:ListData):void
Так сделано потому что у DataGrid могут быть горизонтальные прокрутки, поэтому ячейка не знает какакая колонка к ней поподет после прокрутки. Т.е. прокрутив скрол вправо в эту же ячейку вместо поля "id" придет поле "Сумма"
Добавлено через 46 минут
В общем я немного запутанно объяснил, если кратко то:
Вместо анонимного объекта,

Код AS3:
{id:i, Работы:"", Цена:st.text, Норма:nor, Сумма:drabotig, Исполнитель:""}
созадете экземпляр совего класса
и внем высчитываете все значения

Код AS3:
raboti.addItem(new ModelRow(id, "", sr.text, nor, Сумма:drabotig, "");
В свойство колонки передаете конструктор наследник CellRenderer отрисовывающий ячейку

Код AS3:
var dataGridColumn:DataGridColumn = new DataGridColumn("id");
dataGridColumn.cellRenderer = MyClassCellRenderer