Просмотр полной версии : подгрузка xml в datagrid с фильтром
misha912
16.10.2010, 22:24
Добрый день, направте на путь истинны.
Нужно сделать чтоб по нажатию на кнопку произошла подгрузка данных их XML при чем сразу с фильтром в DataGRid. данные для фильтра передает кнопка.
при запуске flex приложения данные в datagrid не должны показываться.
В чем собственно состоит вопрос?
misha912
17.10.2010, 19:03
В чем собственно состоит вопрос?
как загрузить xml сразу с выборкой
Вариант 1. Сделать выборку на сервере, отдать XML.
Вариант 2. Загрузить XML, сделать выборку.
Вариант 3. Загрузить XML, распарсить в объекты, объекты запихнуть в ArrayCollection, для ArrayCollection прописать filterFunction.
misha912
17.10.2010, 22:01
Вариант 1. Сделать выборку на сервере, отдать XML.
Вариант 2. Загрузить XML, сделать выборку.
Вариант 3. Загрузить XML, распарсить в объекты, объекты запихнуть в ArrayCollection, для ArrayCollection прописать filterFunction.
1 вариант отпадает, так как делаю некий офлайн каталог
2. такой вариант у меня сейчас сначала загружается а потом по кнопке фильтруется
3. Как сделать?
3. Как сделать?
В смысле? Какая у вас структура XML? По какому параметру должно фильтроваться?
misha912
18.10.2010, 14:54
В смысле? Какая у вас структура XML? По какому параметру должно фильтроваться?
Структура такая примерно:
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<DATAPACKET Version="2.0">
<ROWDATA>
<ROW ID="120" SECTION="7" NAME="111111" " YEAR="90-92" PRICE1="28,81" PRICE2="22,96" PRICE3="19,81"/>
<ROW ID="230" SECTION="7" NAME="2222" PRICE1="11,27" PRICE2="7,61" PRICE3="6,2"/>
<ROW ID="43493" SECTION="7" NAME="33333" YEAR="86-88" PRICE1="39,56" PRICE2="31,53" PRICE3="27,2"/>
<ROW ID="327" SECTION="151" NAME="44444" YEAR="91-92" PRICE1="18,73" PRICE2="12,64" PRICE3="10,3"/>
<ROW ID="354" SECTION="104" NAME="555555" YEAR="07-09" PRICE1="15,91" PRICE2="10,74" PRICE3="8,75"/>
<ROW ID="380" SECTION="104" NAME="66666" YEAR="90-92" PRICE1="4,31" PRICE2="2,91" PRICE3="2,37"/>
</ROWDATA>
</DATAPACKET>
фильтровать по section.
Проходите по XML в цикле создаете объекты, например такие:
package
{
public class RowVO //value object
{
public var id:int;
public var section:int;
public var name:String;
public var year:String;
public var prices:/*Number*/Array;
}
}
Там же, в цикле, заполняете поля и добавляете объекты в заблаговременно созданный ArrayCollection.
Пишите функцию:
private var _currentSection:int = -1; //параметр по которому будем фильтровать
private function filterFunction(item:Object):Boolean
{
/*отображаем все, если секция не задана
или отображаем объект, если его секция
совпадает с необходимой*/
if (_currentSection == -1 || _currentSection == item['section'])
{
return true;
{
return false;
}
Присваиваете функцию в свойство filterFunction коллекции (это можно сделать и сразу).
И вызываете метод коллекции refresh().
Если секция меняется, то меняете _currentSection и вызываете refresh().
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.