![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
У меня есть сводная таблица, в которой я хочу хранить разнообразные обьекты. dataProvider этой таблицы я забиндил со статической переменной класса bookmark.
У каждого объекта, есть кнопочка "добавиться в массив bookmark" Это все работает - объекты добавляются в массив нормально. Проблема только в том что itemRenderer разный нужен для разных ячеек. И вот это не работает. вот это моя таблица: <mx:DataGrid x="0" y="0" width="582" height="446" dataProvider="{bookmarks.spisok}"> <mx:columns> <mx:DataGridColumn headerText="data" dataField="myitem" itemRenderer="{data.myitemrenderer}"/> </mx:columns> </mx:DataGrid> [Bindable] public class bookmarks{ public static var spisok:ArrayCollection = new ArrayCollection(); public static function addBmrk(item:*, renderer:*):void{ spisok.addItem({ myitem:item, myitemrenderer:new String(renderer) }); } } не работает. itemRenderer не назначается. Что я делаю не так и как надо? |
|
|||||
|
Modus ponens
|
Попробуйте отнаследоваться от DataGridColumn и добавить ей такой функционал. Сам по себе этот класс того, что вы хотите делать не умеет. Т.е. итем-рендерер задается один раз для всей колонки.
__________________
Hell is the possibility of sanity |
|
|||||
|
Да, я уже понял, что не получится.На то оно и Column, что задает всю колонку по одному образцу.
Это нужен mx:VBox и обьекты надо добавлять туда. Он может содержать разные обьекты. Я даже попробовать успел - не работает Но все равно VBox - это правильней ![]() теперь у меня так: <mx:VBox id="myVbox" creationComplete="myVboxConfListeners()"/> ... private function myVboxConfListeners():void{ bookmarkEvent.dispatcher.addEventListener(bookmarkEvent.AddBookmark, function(ev:*=null):void{ myVbox.addChild(bookmarkEvent.data ); } ); } public class bookmarkEvent{ public static const AddBookmark:String="addBkmrkEvent"; public static var dispatcher:EventDispatcher=new EventDispatcher(); public static var data:*; public static function newBkmrk(obj:*):void{ data=obj; dispatcher.dispatchEvent(new Event(AddBookmark) ); } При этом выскакивает ошибка. TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at mx.controls.dataGridClasses::DataGridBase/itemRendererToIndices()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\controls\dataGridClasses\DataGridBase.as:2679] at mx.controls.listClasses::ListBase/mouseOverHandler()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:8788] Добавлено через 1 час 20 минут вобщем он не клонируется я пробовал его клонировать через ByteArray - не получается. пробовал через mx.utils.objectUtil.copy - тоже не вышло попробовал в обьекте, который себя добавляет, определить функцию получилось, но свойства нового обьекта настроить не получается. Как только я пытаюсь настраивать комбобоксы и текстарии в переменной p -- вылетает ошибка "Не удается вызвать свойство или метод со ссылкой на объект "null". Добавлено через 1 час 48 минут проблема наверное в том, что компонент, который я хочу добавить "в закладку" является не полноценным компонентом, а itemRenderer-ом. У него свойства прописаны как text="{data.name}". Может, поэтому не получается. хз |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|