0

我不确定是否有更好的方法来做到这一点,如果有请告诉我。但是现在,我有一个包含名称的组合框列表。

组合框是 stu1、stu2、stu3 等,一直到 63 并保存在 allStudents MovieClip 中

for(var i = 0; i < allStudents.length; i++)
{
    var newTempStudent:ComboBox = allStudents.getChildAt(i);

    newTempStudent.dataProvider.addItem({label: fullName, data:fullName});
    newTempStudent.getChildAt(i).dataProvider.sortOn("label");
    newTempStudent.getChildAt(i).selectedItem = allStudents.getChildAt(i).getItemAt(i);

}

本质上,我正在尝试:

从同一个 dataProvider 获取所有 63 个组合框进行更新,

按字母顺序对它们进行排序,

然后为每个学生设置默认选择(stu1 应该显示 dataProvider(0),stu2 应该显示 dataProvider(1) 作为默认选择)

我得到的错误是:

场景 1,图层“图层 1”,第 1 帧,第 83 行 1118:将具有静态类型 flash.display:DisplayObject 的值隐式强制转换为可能不相关的类型 fl.controls:ComboBox。

现在我假设我得到了它,因为它正在寻找的是作为显示对象并执行组合框命令的影片剪辑,但我不确定如何执行此操作本身。

最初我打算使用 dataGrid 来执行此操作,但是当我尝试将 dataGrid 链接到 checkBoxes 以进行出勤时,它变得太复杂了。

非常感谢任何和所有帮助!

4

1 回答 1

0

试试这个代码:

for(var i = 0; i < allStudents.length; i++)
{
    var newTempStudent:ComboBox = allStudents.getChildAt(i) as ComboBox;

    newTempStudent.dataProvider.addItem({label: fullName, data:fullName});
    newTempStudent.getChildAt(i).dataProvider.sortOn("label");
    newTempStudent.getChildAt(i).selectedItem = allStudents.getChildAt(i).getItemAt(i) as ComboBox;

}

getChildAt() 返回一个 DisplayObject,因此您需要将其转换为 ComboBox。

于 2013-04-21T23:22:29.717 回答