观察下面的Flex程序(我正在使用Flex Builder 3 w/3.5 SDK)。第二个组合框的条件是第一个。如果选择了“名字”,那么您可以选择“姓氏”。如果选择“无”,则不允许您选择姓氏,而是提示您选择姓氏。为什么Flex 3中的组合框会令标签神秘地消失?
要查看消失标签的神秘问题,请运行该程序并选择名字。然后选择一个姓氏。一切都很好。然后在第一个组合框中选择“无”。第二个组合框的提示变回,并删除姓氏。一切都还好。然后尝试再次选择名字和姓氏。在选择名字后,您会看到姓氏不会显示,尽管它们的空格可以使用(并且如果您调试程序,数据提供程序中会显示正确的数据)。
这个'错误'一直在内部被杀死。我正在实施这个行为的项目比较复杂,但这个例子基本上是例证了发生了什么。这是Flex中的一个错误,还是我做错了什么?
谢谢!
<?xml version="1.0" encoding="utf-8"?>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var cbCompanyDP:ArrayCollection = new ArrayCollection([ { firstName: "None", data: 0 },
{ firstName: "Bob", data: 1 },
{ firstName: "Bart", data: 2 } ]);
[Bindable]
public var cbEmployeeDP:ArrayCollection = new ArrayCollection();
public var employees:ArrayCollection = new ArrayCollection([ { lastName: "Smith" },
{ lastName: "Smyth" },
{ lastName: "Smick" },
{ lastName: "Smack" } ]);
[Bindable]
public var prompt:String = "Choose First Name first";
public function cbFirstNameChange(value:int):void
{
if (value == 0)
{
employees.removeAll();
setEmpDP(employees);
prompt = "Choose First Name first";
}
else
{
setEmployees();
setEmpDP(employees);
prompt = "Now choose Last Name";
}
}
private function setEmpDP(ac:ArrayCollection):void
{
cbEmployeeDP = ac;
}
private function setEmployees():void
{
employees = new ArrayCollection([ { lastName: "Smith" },
{ lastName: "Smyth" },
{ lastName: "Smick" },
{ lastName: "Smack" } ]);
}
]]>
</mx:Script>
<mx:HBox>
<mx:ComboBox dataProvider="{cbCompanyDP}"
id="cbFirstName"
labelField="firstName"
width="200"
change="cbFirstNameChange(cbFirstName.selectedItem.data)"
prompt="Choose a first Name" />
<mx:ComboBox dataProvider="{cbEmployeeDP}"
id="cbLastName"
labelField="lastName"
width="200"
prompt="{prompt}" />
</mx:HBox>
老兄!我试过你pgm,它在ma机器上显示没有这样的问题! – Anoop 2010-04-16 06:59:39
那是令人沮丧的。你使用的是什么版本的Flex SDK?哪个版本的Flash Player? – eterps 2010-04-16 13:59:14