![]() |
Изменение поведения itemEdotor'а при изменении сериализации на строгую
Было:
получаю данные через RemoteObject - достаточно большую коллекцию сложных объектов, все НЕпримитивные объекты обозначены как Object; вставляю в DataGrid c редактированием. Выбираю нужную колонку, кликаю - появляется комбобокс с библиотечными данными, выбираю - все работает отлично. Стало: Понадобилась более сложная работа с получаемыми объектами, решил ввести AS-классы ([RemoteClass]), соответствующие серверным. С получением, сериализацией и типизацией проблем не возникло (проверял данные по событию result в RemoteObject), количество и названия свойств в точности соответствует серверному и точно соответствует тем объектам, которые я получал до создания своих классов. Таблица отображается, тут непорядков не обнаружено. Однако при клике на редактируемую ячейку (где должен появиться комбобокс) выскакивает эксепшн: Код:
ReferenceError: Error #1069: Не удалось найти свойство null в myclasses.MyClass1; отсутствует значение по умолчанию.Код AS3:
Я бы, конечно, мог установить поле dataField - в этом случае ошибок при выборе редактируемой ячейки не возникает, но проблемы возникают при завершении редактирования, так как данное linked свойство пользовательского объекта - непримитивное, а также объект, а синтаксис свойства dataField не позволяет указать что-то типа такого: "code.value", а при указании как "code" естественно не может записать, так как MyObject.code - это Object, а вібираемое в комбобоксе - строка. То есть вижу, что можно поиграться и перехватывать события окончания редактирования и назначать результат в них. Однако остается загадкой, почему при смене Object на MyObject при отсутствии видимых причин возникает проблема. Интуиция подсказывает, что, по всей видимости, если RemoteObject получает объект и не находит шаблона класса, куда его можно поместить (кому сопоставить), то создает свой объект типа Object, но с наследованием или расширением другого класса или интерфейса. Какого и как - не увидел и не нашел. Очень хотелось бы в этом разобраться, подскажите направление. Добавлено через 19 часов 20 минут А ларчик просто открывался ... Для DataGridColumn обязательно надо указывать dataField и для задачи типа моей editorDataField. Просто если у отображаемого столбца аналог в объекте коллекции - Object (или пользовательский класс), то editorDataField="selectedItem". Остальное - в обработчике itemEditEnd таблицы. Удивительный язык. Не сразу догадался, что вместо названия поля можно вставить ЛЮБОЕ свойство объекта. И код пришлось поковырять, чтобы прийти к решению. |
| Часовой пояс GMT +4, время: 18:36. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.