Flex数据网格没有正确更新



我有两个表:Person {pID, pName, deptID}和Departments {deptID,deptName}像这样的SQL语句可以让我得到一个人的名字和部门的名字:

SELECT pName, departments.deptName FROM people INNER JOIN people.deptID = departments.deptID;

以上工作正常。我有一个Flex下拉列表,填充了deptNames。当我点击提交按钮时,我可以毫无问题地获得所选部门的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应用程序来刷新数据网格以显示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对象的属性添加到数据网格中,除了一个属性是来自部门的外部ID (deptID)。

我认为你需要设置你的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);
    }
}

我怀疑的是:上面的select语句只在您第一次初始化/运行应用程序时运行。任何你添加的后记,都不能调用select语句来使用join语句返回部门名称,因此你只能看到id,直到下一次加载/初始化整个应用程序。

相关内容

  • 没有找到相关文章

最新更新