PDA

Просмотр полной версии : Вывод данных по частям


bokr
26.11.2007, 12:29
Привет!
Я делаю CD-каталог продукции...
Хочется сделать красиво... Что-то вроде flexstore...
Возникла проблема: огромный ассортемент(~10000 наименований)... при загрузке приложения все данные из каталога (вместе с картинками) кэшируются... Это происходит очень долго... и потом все "красивые" переходы между видами тормозят... :(
Вопрос: как организовать по-стрничный вывод продукции (не грузить все сразу в память)?

baron27
26.11.2007, 12:38
получай по частям из базы, выводи по частям. ничего нового.

bokr
26.11.2007, 12:50
получай по частям из базы, выводи по частям. ничего нового.
Теоретичеки - понятно...
Но... мне нужно еще и фильтры применять к базе перед выводом... а не после...
Более конкретный ответ хочется у слышать...
И, если можно, с примером кода...

Sneg
26.11.2007, 13:30
Что мешает слать запрос с каким-то условиями (фильтрами), которые понимает сервер (скрипт/сокет)?

baron27
26.11.2007, 14:41
тебе не понятно, как организовать запросы из флекса через сервер к базе? amfphp или weborb.

bokr
26.11.2007, 15:17
Что мешает слать запрос с каким-то условиями (фильтрами), которые понимает сервер (скрипт/сокет)?
какой сервер???? :(
каталог локально работать должен с компакт-диска(без подключения к интернету)...

bokr
26.11.2007, 15:34
Помогите, плиииз!
Не понимаю как это организовать...

baron27
26.11.2007, 15:38
Ты бы обяснил сначала, что откуда должно работать, а потом возмущался.
В каком виде у тебя данные? Если грамотно созданный xml, то e4x запросы помогут тебе в его управлении. Загружаешь весь xml и крутишь его как хочешь.

bokr
26.11.2007, 16:05
Ты бы обяснил сначала, что откуда должно работать, а потом возмущался.
В каком виде у тебя данные? Если грамотно созданный xml, то e4x запросы помогут тебе в его управлении. Загружаешь весь xml и крутишь его как хочешь.
Данные в xml...

это каталог:

<catalog>

<product productId="1">
<articul>906329</articul>
<name>Штукенция1</name>
<price>49.99</price>
<mass>9.99</mass>
<image>906329.jpg</image>
<infa>вот такая штука1</infa>
<idgr>1001</idgr>
</product>

<product productId="2">
<articul>948342</articul>
<name>Штукенция2</name>
<price>39.99</price>
<mass>999.99</mass>
<image>948342.jpg</image>
<infa>вот такая штука2</infa>
<idgr>1002</idgr>
</product>

<product productId="3">
<articul>498763</articul>
<name>Штукенция3</name>
<price>99.99</price>
<mass>199.99</mass>
<image>498763.jpg</image>
<infa>вот такая штука3</infa>
<idgr>1001</idgr>
</product>
</catalog>

еще есть xml с товарными группами:

<group>
<node1 label="группа1" gropid="">
<node label="подгруппа1" gropid="1001"></node>
<node label="подгруппа2" gropid="">
<node label="подгруппа3" gropid="1002"></node>
<node label="подгруппа4" gropid="1003"></node>
</node>
<node label="подгруппа5" gropid="">
<node label="подгруппа6" gropid="1004"></node>
<node label="подгруппа7" gropid="1005"></node>
</node>
</node1>
<node1 label="группа2">
<node label="подгруппа8" gropid="">
<node label="подгруппа9" gropid="1006"></node>
<node label="подгруппа10" gropid="1007"></node>
</node>
<node label="подгруппа11" gropid="">
<node label="подгруппа12" gropid="1008"></node>
<node label="подгруппа13" gropid="1009"></node>
<node label="подгруппа14" gropid="1010"></node>
</node>
</node1>

Собственно гружу группы в дерево...
юзер тыкает группу показываю (хочу показывать... :( ) содержимое группы...
есть еще фильтры по цене и массе(диапазоны)...
трабла в том, что фильтры управляют видимостью объектов... но они все равно остаются загружены в память компа, что существенно замедляет работу приложения...

bokr
26.11.2007, 16:41
не засунул товары внутрь групп т.к. не хочу их отображать в дереве навигации по группам...(другого способа не придумал...)

baron27
26.11.2007, 16:49
Определись, сколько элементов будет работать без тормозов (10).
Загрузи две xml. При нажатии на нод, ты получаешь id группы. Простым e4x запросом типа myXML.product.(idgr=="12") ты получаешь новый xml с этой группы. Потом узнав количество его элементов (20) ты понял, что тебе нужно 2 страницы. Переключение между страницами делай как угодно - удобно создать комбобокс c датапровайдером типа [{label:"1 страница", data:1}...] и т.п. Теперь динамически создаешь окончательный xml с данными только для этой страницы. Циклом от 0 до 9 идешь по полученному после фильрации xml и добавляешь его ноды в новый. Затем новый и отображаешь. Применять дополнительные фильтры также можно e4x запросами.

bokr
26.11.2007, 16:58
Определись, сколько элементов будет работать без тормозов (10).
Загрузи две xml. При нажатии на нод, ты получаешь id группы. Простым e4x запросом типа myXML.product.(idgr=="12") ты получаешь новый xml с этой группы. Потом узнав количество его элементов (20) ты понял, что тебе нужно 2 страницы. Переключение между страницами делай как угодно - удобно создать комбобокс c датапровайдером типа [{label:"1 страница", data:1}...] и т.п. Теперь динамически создаешь окончательный xml с данными только для этой страницы. Циклом от 0 до 9 идешь по полученному после фильрации xml и добавляешь его ноды в новый. Затем новый и отображаешь. Применять дополнительные фильтры также можно e4x запросами.

СПАСИБО! Пошел переваривать... :) ...

еще вопрос возник(глупый конечно):
куда это воткнуть? и как вызывать?
у меня есть панелька с фильтрани(навигационная) и панелька для вывода содержимого каталога...
P.S. Прошу простить за глупый вопрос... но flex ковыряю всего месяц... отсутствие русской документации не дает быстро въехать в некоторые вещи...

baron27
26.11.2007, 18:17
это просто общий алгоритм работы, который ты должен реализовать в виде функций, которые ты можешь воткнуть в тег Script и потом вызвать.

bokr
26.11.2007, 18:31
это просто общий алгоритм работы, который ты должен реализовать в виде функций, которые ты можешь воткнуть в тег Script и потом вызвать.
то, что это алгоритм я понял...
не понятно как из одного компонента добираться до метедов и свойств другого...
простите ламера :rolleyes: ...