Используйте класс-оболочку вокруг объекта в flex / actionscript

Основная цель: выбрать школу, указанную в первой сетке данных, и отобразить все записи / сведения об учениках этой школы в следующей сетке данных. Но, поскольку datagrid редактируемый, и в требовании упоминается: «Используйте класс Wrapper вокруг объекта, чтобы получить данные, установите то же самое и сохраните. Убедитесь, что оболочка имеет возможность привязки, чтобы учитывать обновления, вносимые в текстовые поля datagrid».

У меня есть объект, который является типом объектов доступа к данным, то есть 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> Наконец, сохраните все данные и отправьте их нажатием кнопки «Отправить».


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

Спасибо.


person user120118    schedule 11.07.2009    source источник
comment
Не знаю почему, но система не позволяет мне полностью отобразить мой вопрос. Итак, вот исправление. Частная функция showSchoolStudents (school: mySchoolDO): похожа на эту частную функцию showSchoolStudents (school: mySchoolDO) {for (var b: int = 0; b ‹(school.schoolStudents) .length; b ++) {schoolDatagridProvider.push (school. schoolStudents [б]); } dgOfSchool.dataProvider = schoolDatagridProvider; dgOfSchool.invalidateList (); }   -  person user120118    schedule 11.07.2009
comment
Вам действительно нужно отредактировать свой вопрос и переформатировать его!   -  person Jacob    schedule 11.07.2009
comment
Я отформатировал свой вопрос. Пожалуйста помоги.   -  person user120118    schedule 12.07.2009


Ответы (1)


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

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

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

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

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

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

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

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

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

person verveguy    schedule 12.07.2009