在flex / actionscript中的对象周围使用包装类

时间:2009-07-11 02:12:31

标签: java flex actionscript-3 datagrid wrapper

主要目标:选择第一个数据网格中列出的学校,并在下一个数据网格中显示该学校的所有学生记录/详细信息。但是,由于datagrid是可编辑的,并且要求提到:“在对象周围使用Wrapper类来获取数据,设置相同并保存。确保包装器可绑定以考虑对数据网格文本字段进行的更新。”

我有一个对象,它是一种数据访问对象,即DO。

mySchool:mySchoolDO

mySchoolDO是以下代码的actionScript类:

公共课mySchoolDO

{
        public var schoolName:String;
        public var schoolLocation:String;
        public var schoolStudents:ArrayCollection; 
        // Array of myStudentDO instances

}

上面有一个名为schoolStudents的学生数组,它们访问myStudentDO.as类,如下所述。


myStudent:myStudentDO

myStudentDO.as是以下代码的actionScript类:

public class myStudentDO implements IExternalizable 
{
        [Bindable]      public var studentID: String;
        [Bindable]      public var studentCourses: Array
        [Bindable]      public var studentPhone:Number;
        [Bindable]      public var studentGender:Boolean;

            public function readExternal(input:IDataInput):void {
            studentID = SerializationUtils.readNullableString(input);
            studentCourses = SerializationUtils.readNullableString(input);
            studentPhone = SerializationUtils.readStringList(input);
            studentGender = SerializationUtils.readNullableString(input);
}

在我的主要mxml应用程序中。我做了以下事情:

1>获取所有学校阵列。实例化学校对象并获取学校数据。 2 - ;使用学校对象访问所有学生的数据并存储为对象阵列。


private function availableSchools(schools:Array): void
{
     mySchools=schools;
     loadSchools();
}

private function loadSchools():void
{
   for(var z:int =0; z

点击一所学校后,会触发一个ItemClick事件,该事件将带走学校,然后显示所有学校学生的数据。

private function itemClickEvent(event:ListEvent):void
{
    _school = event.currentTarget.selectedItem;
     showSchoolStudents(_school);
    }

private function showSchoolStudents(school:mySchoolDO) 
{
   for(var b:int=0; b<(school.schoolStudents).length;b++) 
    { 
        schoolDatagridProvider.push(school.schoolStudents[b]); 
    }
       dgOfSchool.dataProvider = schoolDatagridProvider; 
       dgOfSchool.invalidateList(); 
}

showSchoolStudents将显示学生在数据网格上的所有详细信息。但, 我的数据网格是可编辑的。并且,我想在这个对象周围使用WRAPPER CLASS,以便

A&GT;我可以检索studentDO中存在的个人值,即studentID,studentCourses,studentGender,studentPhone。

B个我应该能够在可视化数据网格中更新它们时设置它们。

c取代;最后保存所有数据并提交点击提交。


请帮助代码。我们将非常感激。

感谢。

1 个答案:

答案 0 :(得分:0)

看起来你刚开始使用Flex。

建议:阅读文档。这里有很多关于你要做的基本事情的例子,就是有一个可编辑的网格来显示来自服务器的数据。

一些关键概念:

确保使用ArrayCollection作为Grid的dataProvider,而不是Array。 ArrayCollections提供了这个用例你总是想要的变更通知机制。

确保您的DO模型类都是Bindable。看起来你现在只能将Student属性绑定。让学校也可以绑定。

从School学习到StudentCollection的集合,而不是数组。

遵循惯例并在类名中使用初始大写字母。即MyStudentDO,MySchoolDO

告诉DataGrid您要允许项目编辑。

但是,严肃地说,阅读文档。有很多可用的例子。