У меня есть две таблицы: Person {pID, pName, deptID} и Departments {deptID, deptName}
Подобный SQL-оператор возвращает мне имя человека и название отдела:
SELECT pName, departments.deptName FROM people INNER JOIN people.deptID = departments.deptID;
Выше работает нормально. У меня есть Flex DropDownList, который заполнен deptNames. Когда я нажимаю кнопку отправки, я могу без проблем получить идентификатор выбранного отдела:
protected function button_clickHandler(event:MouseEvent):void
{
person.pName=pNameTextInput.text;
person.deptID=pDepartmentDropDownList.selectedItem.deptID; //ID of selected department obtained correctly.
if (person.pID == 0)
{
createPersonResult.token=personService.createPerson(person);
}
else
{
updatePersonResult.token=personService.updatePerson(person);
}
}
У меня есть обработчик createPersonresult, который пытается обновить сетку данных при добавлении человека. Сетка данных обновляется новым добавленным человеком, но в столбце отдела я получаю идентификатор отдела, выбранный из раскрывающегося списка. Мне нужно перезагрузить флэш-приложение, чтобы обновить сетку данных для отображения deptName.
Чего-то не хватает в этом обработчике результатов createPerson. Google не предоставил особой помощи.
protected function createPersonResult_resultHandler(event:ResultEvent):void
{
currentState="PeopleDetails";
person.pID=event.result as int;
peopleDg.dataProvider.addItem(person); //the problem might be here, more below.
peopleDg.setSelectedIndex(peopleDg.dataProvider.getItemIndex(person));
peopleDg.ensureCellIsVisible(peopleDg.selectedIndex);
}
Из приведенного выше комментария я вижу, что добавление person действительно добавит атрибуты объекта person в сетку данных, за исключением того, что один атрибут представляет собой внешний идентификатор (deptID) из отделов.