Person {pID、pName、deptID}とDepartments {deptID、deptName}の2つのテーブルがあります。このようなSQLステートメントは、個人の名前と部門名を取得します。
SELECT pName, departments.deptName FROM people INNER JOIN people.deptID = departments.deptID;
上記は問題なく動作します。deptNamesが入力されたFlexDropDownListがあります。送信ボタンをクリックすると、選択した部門のIDを問題なく取得できます。
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ハンドラーがあります。データグリッドは新しく追加された人で更新されますが、部門の列で、ドロップダウンリストから選択した部門のIDを取得します。データグリッドを更新してdeptNameを表示するには、フラッシュアプリをリロードする必要があります。
このcreatePerson結果ハンドラーに何かが欠けています。グーグルはあまり助けを提供しなかった。
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を追加すると、1つの属性が部門からの外部ID(deptID)であることを除いて、personオブジェクトの属性が実際にデータグリッドに追加されることがわかります。