我有两个表:Person {pID,pName,deptID}和Departments {deptID,deptName} 像这样的SQL语句让我得到一个人的名字和部门名称:
SELECT pName, departments.deptName FROM people INNER JOIN people.deptID = departments.deptID;
以上工作正常。我有一个用deptNames填充的Flex DropDownList。当我单击提交按钮时,我可以毫无问题地获取所选部门的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。我需要重新加载flash应用程序以刷新datagrid以显示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确实会将person对象的属性添加到datagrid,除了一个属性是来自部门的外部ID(deptID)。
答案 0 :(得分:0)
我怀疑的是:上面的select语句仅在您第一次初始化/运行应用程序时运行。你在后面添加的任何内容都无法调用那个使用join语句返回部门名称的select语句,因此你只能在下一次加载/初始化整个应用程序之前看到id。
答案 1 :(得分:0)
我认为您需要设置deptName属性,因为当它在界面中添加时,您没有从连接中获取它。所以这样的事情应该是我认为的伎俩吗?
编辑:4.5下拉而不是组合框
protected function button_clickHandler(event:MouseEvent):void
{
person.pName=pNameTextInput.text;
person.deptID=pDepartmentDropDownList.selectedItem.deptID; //ID of selected department obtained correctly.
person.deptName = pDepartmentDropDownList.selectedItem.deptName;
if (person.pID == 0)
{
createPersonResult.token=personService.createPerson(person);
}
else
{
updatePersonResult.token=personService.updatePerson(person);
}
}