Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.11.2008, 17:13
MedvedevA вне форума Посмотреть профиль Отправить личное сообщение для MedvedevA Найти все сообщения от MedvedevA
  № 1  
Ответить с цитированием
MedvedevA

Регистрация: Jul 2006
Сообщений: 54
По умолчанию Открытие узла в компоненте Tree

У меня есть компонент дерево. ХМЛ его состоит из тегов payment, но глубина вложения не известна.

Прмер:
Код:
<payments>
  <payment current_iba_id="111111111" parent_iba_id="" label="Наличные платежи" isBranch="true">
    <payment current_iba_id="111200309" parent_iba_id="111111111" label="УЖКХ. Минск - oFF-line с остатком" isBranch="false"/>
    <payment current_iba_id="111999999" parent_iba_id="111111111" label="УСЛУГИ СВЯЗИ..." isBranch="true">
      <payment current_iba_id="111300502" parent_iba_id="111999999" label="Белсел" isBranch="false"/>
    </payment>
    <payment current_iba_id="100300668" parent_iba_id="111111111" label="ByFly. Гомельская обл." isBranch="false"/>
    <payment current_iba_id="199100501" parent_iba_id="111111111" label="Орифлэйм" isBranch="false"/>
    <payment current_iba_id="777777777" parent_iba_id="111111111" label="999999999999999999999999999999999999999999999" isBranch="true">
      <payment current_iba_id="111200309" parent_iba_id="777777777" label="УЖКХ. Минск - oFF-line с остатком" isBranch="false"/>
      <payment current_iba_id="111200301" parent_iba_id="777777777" label="УЖКХ. Минск" isBranch="false"/>
    </payment>
  </payment>
</payments>
МНЕ НУЖНО НАЙТИ, АКТИВИЗИРОВАТЬ И ОТКРЫТЬ ОПРЕДЕЛЁННЫЙ УЗЕЛ ДЕРЕВА с заданными атрибутами current_iba_id="777777777" и parent_iba_id="111111111". Пытаюсь найти искомый узел рекурсивно(так как не знаю глубину вложения).

Код:
 var myXML:XML= XML(resultXmlList);
    myTree.dataProvider=myXML;
    var node:XML = getSelectNodeFromXML(resultXML.parent_iba_id[0], resultXML.current_iba_id[0], myXML)
    myTree.validateNow(); 
    myTree.expandItem(node, true);
    myTree.selectedItem = node;
  
  
  public function getSelectNodeFromXML(parent_iba_id:String, current_iba_id:String, xml_tmp:XML):XML
         {             
            var children:XMLList = XMLList(xml_tmp).children();
            for(var i:Number=0; i < children.length(); i++)
            {  		
                                       	
                if( children[i].@current_iba_id == current_iba_id &&  children[i].@parent_iba_id == parent_iba_id) {
                
                     return children[i];
                }else{                   	
                   	if( children[i].@isBranch=="true"){                   		
                   		var node:XML =getSelectNodeFromXML(parent_iba_id, current_iba_id, children[i]);                   		
                   		if( node != null ) return node;
                    }
                }
            } 
            return null;            	    	
         }
Узел то находит, но когда пытается открыть узел в дереве myTree.expandItem(node, true); почему то не срабатывает(переменная передаётся как копия наверно). Как открыть узел(любой способ)?

Добавлено через 43 минуты
Сейчас сделал по другому и все равно находит, но не активизирует и не открывает узел:
Код:
var myXML:XML= XML(resultXmlList);
 myTree.dataProvider=myXML;
var subXML:XMLList=myXML..payment.(@parent_iba_id == resultXML.parent_iba_id[0] && @current_iba_id == resultXML.current_iba_id[0]);
Alert.show("subXML= "+subXML.toXMLString(),"Сообщение");//Возвращает нужный узел
myTree.expandItem(subXML, true, false);
             	    		
 myTree.selectedItem = subXML;
Alert.show("selectedItem= "+myTree.selectedItem,"Сообщение");//Возвращает null


Последний раз редактировалось MedvedevA; 21.11.2008 в 17:58.
Старый 21.11.2008, 19:43
Бармалей вне форума Посмотреть профиль Отправить личное сообщение для Бармалей Посетить домашнюю страницу Бармалей Найти все сообщения от Бармалей
  № 2  
Ответить с цитированием
Бармалей
 
Аватар для Бармалей

Регистрация: Jun 2005
Адрес: Москва
Сообщений: 784
Отправить сообщение для Бармалей с помощью ICQ
Документацию читать внимательно 2 раза!!! =)

Цитата:
expandItem () method

Opens or closes a branch item. When a branch item opens, it restores the open and closed states of its child branches if they were already opened. If you set dataProvider and then immediately call expandItem() you may not see the correct behavior. You should either wait for the component to validate or call validateNow() .
__________________
Garbage Collector || AIR (Apollo) Docs

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.