Используйте класс-оболочку вокруг объекта в flex / actionscript - PullRequest
0 голосов
/ 11 июля 2009

Основная цель: выберите школу, указанную в первой таблице данных, и отобразите все записи / данные об этой школе в следующей таблице данных. Но, поскольку сетка данных является редактируемой и в требовании упоминается: «Используйте класс 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> Я могу получить индивидуальные значения, присутствующие в studentDO, то есть studentID, studentCourses, studentGender, studentPhone.

b> Я должен иметь возможность устанавливать значения по мере их обновления в визуальной сетке данных.

c> Наконец, сохраните все данные и отправьте их, нажав "Отправить".


Пожалуйста, помогите с кодом. Это будет высоко оценено.

Спасибо.

1 Ответ

0 голосов
/ 12 июля 2009

Похоже, вы только начинаете работать с Flex.

Предложение: прочитайте документацию. Есть множество примеров того, что вы пытаетесь сделать здесь: иметь редактируемую сетку, которая отображает данные, поступающие с сервера.

Некоторые ключевые понятия:

Убедитесь, что вы используете ArrayCollection в качестве dataProvider для Grid, а не для Array. ArrayCollections предоставляет механизм уведомления об изменениях, который вам неизменно требуется в этом случае использования.

Убедитесь, что все ваши классы модели DO являются привязываемыми. Похоже, что в данный момент вы только делаете свойства Student связываемыми. Сделайте и Школу обязательной.

Сделайте ссылку из Школы на коллекцию учеников ArrayCollection, а не Array.

Следуйте соглашению и используйте начальные заглавные буквы в именах классов. т.е. MyStudentDO, MySchoolDO

Сообщите DataGrid, что вы хотите разрешить редактирование элемента.

Но, если серьезно, прочитайте документы. Доступно множество примеров.

...