![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 67
|
Столкнулся вот с какой проблемой, имеются компоненты которые используют для вывода массивы bindable
dataProvider="{arrayRooms}" это может быть и DataGrid и List Вопрос вот в чем - при изменении данных массива чтобы отобразить эти изменения - делаем arrayRooms.refresh() при это происходит автоматический скрол компонента в то место где были изменения, как его отключить ? чтобы при изменения данных пользователь оставался в той позиции списка, где сейчас находится? и попутный вопрос - в itemrender используются изображения с внешних сайтов, в некоторых ячейках списка или таблицы могут быть графические элементы, например статус активный - одно изображение, заблокирован другое, и вот если список довольно большой при скроллинге вниз вверх эти фотографии заново закачиваются (это видно в плагине для mozilla - firebug) - как можно отключить повторную закачку изображений ? P.S. отдельную тему не стал создавать, так как проблемы очень близки друг к другу |
|
|||||
|
1. Судя по методу refresh() вы используете не массив, а коллекцию. Научите ваши объекты данных отправлять событие PropertyChangeEvent или вызывайте у коллекции itemUpdated(). Это решит ваши "проблемы". refresh() предназначен применения сортировки и фильтра.
Цитата:
2. Кэшируйте изображения и скармливайте компонентам уже загруженные, если они были загружены ранее. Или не обращайте внимание, если сервер настроен правильно, то изображения будут взяты из кэша браузера. |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 67
|
параметром itemUpdated() является объект. откуда его взять если у меня изменилось всего одно значение из 20 полей ?
создавать новый объект с перечислением этих всех полей ? и изменять только одно из них, как то выглядит не разумно, не уж то нет способа попроще - изменилось одно значение извне (не пользователь изменил datagrid) |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
1. Запоминайте позицию скроллера и по событию обновления itemRenderer скроллируйте к ней.
2. В этой теме затронут вопрос кэширования изображений в swf при помощи bitmapData: http://www.flasher.ru/forum/showthread.php?t=148335 |
|
|||||
|
Какие поля? Какое создание объекта?
Пример для itemUpdated ... var obj:Object = arrayRooms.getItemAt(5); //вместо Object свой тип var oldValue:Object = obj.property; //вместо Object свой тип obj.property = 20; //вместо 20 свое значение arrayRooms.itemUpdated(obj, "property", oldValue, obj.property); //сообщаем об изменении Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 67
|
может я чего то не понимаю но код
var obj:Object = arrayRooms.getItemAt(t); //вместо Object свой тип var oldValue:int = obj.timer_sec; //вместо Object свой тип obj.timer_sec = oldValue-1; //вместо 20 свое значение arrayRooms.itemUpdated(obj, "timer_sec", oldValue, obj.timer_sec); //сообщаем об изменении trace('oldValue-'+oldValue); trace('obj.timer_sec-'+obj.timer_sec); P.S. Есть некоторые сдвиги если убрать itemRenderer="showSec" и добавить dataField="timer_sec" то все прекрасно работает, как сделать чтоб с итемрендерором работало ? itemRenderer <?xml version="1.0" encoding="utf-8"?> <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:s="library://ns.adobe.com/flex/spark" paddingLeft="2" verticalAlign="middle" horizontalAlign="center" height="20" > <mx:Style> .style_gray { color:#999999; } .style_black { color:#000000; } </mx:Style> <mx:Script> <![CDATA[ override public function set data(value:Object):void { super.data = value; if (value != null) { var countSecCreateDelta:int = int(value.timer_sec); // если 2 серый стиль if ( int(value.table_count_players) < 3 ) { id_label_create_delta.styleName = 'style_gray'; } else { id_label_create_delta.styleName = 'style_black'; } // дефолтные значения if (countSecCreateDelta < 0) { id_label_create_delta.text = '00:00'; } else if (countSecCreateDelta < 10) { id_label_create_delta.text = '00:0'+value.table_create_delta; } else { id_label_create_delta.text = '00:'+value.table_create_delta; } // конец условия на null } // конец функции } ]]> </mx:Script> <s:Label id="id_label_create_delta" /> </mx:HBox> Последний раз редактировалось Lexxx_HU; 03.06.2011 в 12:26. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|